玩转Reactjs第一篇-构建工程(create-react-app)

本文主要是介绍玩转Reactjs第一篇-构建工程(create-react-app),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言

     前期对vue的使用以及源码做了一些介绍和分析,vue由于其易用易学,性能高等特点,吸引越来越多的前端开发者在使用。作为前端框架的三剑客之一的Reactjs,得到了facebook社区大力支持,有着丰富的UI框架组件,用户群也大大多于Vue,ng,算是老牌的前端框架。Vue和Reactjs的异同特性,网上也总结了非常多,但大部分都是概念性的泛泛而谈,本系列博客在学习Reactjs的同时,也将与Vue在使用方法,实现原理等方面进行比较,通过具体的实例了解两者的差异,故需要各位对Vue基本知识以及原理有一定的了解。

  本章节先了解下Reactjs的工程构建。

二、工程构建

reactj的环境搭建有两种方法,一种是直接引用reactjs

<script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
<script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
<script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>

其中babel是用来编译JSX的,一般用于开发环境,生产环境需要预先编译好,这样速度更快。这个方法适合初学者,做一些demo性的实验。下面我们重点要讲第二个方法,使用npm搭建工程。

1、安装nodejs

 可以使用“node -v”检查你的机器上是否安装过。如果没有检测到,则进行安装,否则跳过下面安装步骤。从nodejs官网下载安装文件

安装完成后,可以检查安装是否成功

在您的环境变量中path路径中,自动添加了安装node目录。nodejs安装完成后,就可以使用npm工具包安装

在“C:\Users\XXXX\AppData\Roaming\"(XXXX代表当前的用户)生成npm文件夹,npm工具安装的组件包都会存储在这个目录下。

2、安装cnpm

由于伟大的墙,npm在国内使用的时候,资源下载非常慢,但淘宝给我们提供了cnpm可以替代npm命令行

输入以下指令:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org
$ npm config set registry https://registry.npm.taobao.org

执行结果如下:

安装成功。

3、安装 create-react-app

通过create-react-app命令行,可以零配置搭建工程

输入以下指令:

cnpm install -g create-react-app

安装完成后,可以到“C:\Users\XXXX\AppData\Roaming\npm\node_modules"(XXXX代表当前的用户)会增加以下两个文件夹,相关的资源都在该文件下。

4、创建应用

现在可以使用create-react-app创建应用

输入指令:

create-react-app my-app

以下是部分截屏

这个过程需要下来依赖包,速度会慢些,创建的过程可能会遇到一些问题,可以上网找下解决方法,一般都能搞定。

启动应用

输入:http://localhost:3000/,看到久违的react logo,大功告成。

三、工程结构

进入my-app目录,目前目录的说明如下:

整个项目是基于webpack搭建的,我们对其中几个重要的文件进行说明

1.package.json

主要分三个部分

第一部分是应用的描述信息,包括应用名称,版本等信息。

第二部分,项目相关依赖,这里配置了基本的依赖,如react,react-dom,其实还有很多其他的依赖插件,后面用到我们再介绍。Reactjs将webapack的相关配置封装到react-scripts中,对用户进行隐藏,减少了用户的配置。

第三部分,相关命令行,比如"npm run start "启动应用,"npm run build"编译应用。执行"npm run eject",会发现根目录下会增加两个子目录config以及scripts。打开这两个目录会发现,实际就是将react-scripts中相关webpack的配置开放给用户了,用户可以根据需要进行配置。注意这个过程是单向,不可逆的。

其他部分主要和eslint以及browser相关。暂时不做重点分析。

2、index.html

index.html可以理解为整个工程的web容器,它将配合index.js完成应用框架的渲染,其中

 <div id="root"></div>

是根节点,所有的dom节点都会挂载在此根节点下。

3、index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';//app组件渲染到根节点
ReactDOM.render(<App />, document.getElementById('root'));// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
serviceWorker.unregister();

导入相关的资源和组件,ReactDOM.render将App组件渲染到root节点下。

4、app.js

import React from 'react';
import logo from './logo.svg';
import './App.css';function App() {return (<div className="App"><header className="App-header"><img src={logo} className="App-logo" alt="logo" /><p>Edit <code>src/App.js</code> and save to reload.</p><aclassName="App-link"href="https://reactjs.org"target="_blank"rel="noopener noreferrer">Learn React</a></header></div>);
}export default App;

app方法返回一段JSX代码,这段代码渲染后,就是上面展示的demo页面。后面我们会具体分析Reactjs组件的使用。

四、与VUE比较

vue的工程创建大家可以参考我的VUE探索第二篇-手脚架(vue-cli),其与reactjs的创建过程非常类似

1、项目默认都是基于webpack+ES6。

2、官方提供手脚架,vue为vue-cli,reactjs为create-react-app.

3、工程目录架构相似,包含主页面(index.html),入口js(vue为main.js,reactjs为index.js),组件文件(vue为app.vue,reactjs为app.js)

当然也有着差异点:

1、reactjs与vue相比较,默认目录结构没有webpack相关配置,也没有路由组件。

2、reactjs的css与js是单独的文件,而vue是合成在.vue文件中。

3、reactjs的dom是基于JSX的,vue是基于template的。

五、总结

本章节主要介绍了reactjs工程的搭建过程,并与vue的手脚架创建的过程和目录进行了对比,下面我们将学习Reactjs的JSX语法。

这篇关于玩转Reactjs第一篇-构建工程(create-react-app)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/829140

相关文章

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️