1.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,或者说是一个可以解析和执行Javascript代码的运行时环境。
2.我们在编辑器中写的代码,是需要一个运行的环境的,而js的运行环境就是浏览器中的解析器.
3.Ryan DahI把chrome的V8引擎移动到了服务器端,从而可以解析执行我们的js代码.
4.Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
5.事件驱动:当触发某个事件的时候,执行事件中指定的代码!
6.非阻塞式 I/O 的模型:采用非阻塞的操作,能够提高处理的效率!
7.Node.js 的包管理器 npm,是全球最大的开源库生态系统,网址: npmjs.com
8.Node.js的官网 nodejs.org
9.Node.js的中文官网 nodejs.cn
1.到node.js官网上下载.msi后缀的安装包.
2.安装的时候,最好以管理员的身份进行安装.
3.也可以到命令行中,切换 到当前目录下面,使用命令行进行安装.
4.安装完成之后,重新打开窗口后输入 node -v或是node --version,如果看到版本号即安装成功
1.Node可以作为前端的一个工具去使用,通过NPM安装好用的工具.
2.Node可以开发一些前端的工具【i5ting_toc】
3.Node可以做服务器
4.可以操作数据库并对外提供接口
5.可以实现即时聊天程序.
6.可以制作一些好用的工具,比如编辑器
配置淘宝镜像
由于每次安装包需要走国外的网络,速度很慢,所以,淘宝帮我们在国内创建了一个NPM包托管网站,能够提升使用NPM装包时候的速度!
xxxxxxxxxx
21npm config set registry https://registry.npm.taobao.org --global
2npm config set disturl https://npm.taobao.org/dist --global
npm init -y
初始化一下包管理文件package.json
,将来所有安装的包,都会记录到这个文件中npm install 包名 --save/--save-dev
去安装包;其中,install
可以简写成i
;--save
表示把包安装到部署依赖中(在开发和部署上线都需要使用的包); --save-dev
表示安装到开发依赖(只在项目开发阶段需要用到的包);--save
可以简写成-S
;--save-dev
可以简写成-D
;npm uninstall 包名 --save/--save-dev
或者npm remove 包名 --save/--save-dev
npm i webpack -g
,其中,-g
表示全局安装某些包,通过-g
安装的包都在C:\Users\用户名\AppData\Roaming\npm
下面yarn和npm的作用完全一样,都是用来管理项目中的第三方依赖包的!
yarn是Facebook公司推出来的一套包管理工具!【后期咱们学习React,尤其是ReactNative的时候,默认就是用Yarn去装包的】
yarn会缓存曾经安装过的包;但是npm也会缓存,但是效果不如yarn明显;
配置yarn的国内淘宝镜像
xxxxxxxxxx
21yarn config set registry https://registry.npm.taobao.org --global
2yarn config set disturl https://npm.taobao.org/dist --global
1.初始化文件
x
1新建一个项目文件夹比如: myApp,进入此文件夹打开命令行终端,输入以下命令初始化配置文件
2npm init -y
2.下载部分工具包
x
1yarn add @babel/core @babel/preset-env @babel/preset-react babel-loader css-loader file-loader html-webpack-plugin style-loader url-loader webpack webpack-cli --dev
3.在当前文件夹里面新建文件夹src,并建index.html和main.js文件
4.在当前的文件夹里面新建 一个文件,名称叫 ".babelrc",里面的代码如下:
x
91{
2 "presets": [
3 "@babel/preset-env",
4 "@babel/preset-react"
5 ]
6}
5.在index.html中定义一个div
xxxxxxxxxx
141<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <meta http-equiv="X-UA-Compatible" content="ie=edge">
7 <title>Document</title>
8</head>
9<body>
10 <div id="app"> //第一天的div id名称为box
11
12 </div>
13</body>
14</html>
6.main.js中引入要使用的文件并书写代码
x
1import React from 'react' //写完了这行代码之后,打包工具默认就会到当前项目文件夹中的mode_modules增查找对应的模块
2import ReactDOM from 'react-dom' //这个DOM必须大写,与解析的DOM相关的模块
3//在最新的语法中提倡不加分号
4const element = <div>哈哈</div>
5
6ReactDOM.render(
7 element,
8 document.getElementById('app')//第一天的div id名称为box
9)
7.下载react react-dom
x
1yarn add react react-dom --save
8.在react_start文件夹下面添加一个webpack.config.js的配置文件内容如下:
x
1var path = require('path')
2var htmlPlugin = require('html-webpack-plugin') // 引入下载的包
3module.exports = {
4 entry: './src/main.js', //指定一个项目的入口文件
5 output: {
6 path: path.join(__dirname, './dist'),
7 filename: 'hebing.js'
8 },
9 module:{
10 rules: [
11 {
12 test: /\.css$/,
13 loader: ['style-loader','css-loader']
14 },
15 {
16 /** babel-loader es6转es5
17 * 需要下载的包: babel-loader/babel-core/babel-preset-env
18 * {
19 "presets": [
20 ["env", { "modules": false }],
21 "react"
22 ]
23 }
24 *
25 * 还能够将react中的jsx语法转换为js语法!
26 * 需要下载: babel-preset-react
27 * 在.babelrc文件中添加配置:
28 * {
29 * "presets": [
30 * "react" // 这个react就表示 babel-preset-react包
31 * ]
32 * }
33 */
34 test: /\.js$/,
35 loader: ['babel-loader']
36 },
37 {
38 test: /\.(jpg|png|jpeg|bmp|gif)$/,
39 loader: ['url-loader']
40 },
41 { test: /\.(ttf|woff|woff2|eot|svg)$/,
42 loader: ['file-loader?name=[name].[ext]']
43 }
44 ]
45 },
46 plugins: [
47 new htmlPlugin({
48 // 这个文件,默认会复制到 output.path所指定的路径
49 template: './src/index.html' , // 指定复制哪个html
50 filename: 'index.html' // 指定复制后的html叫什么名字
51 })
52 ]
53}
9.修改一下自己的package.json文件,修改成如下内容 (只改第7行)
x
1{
2 "name": "react-start",
3 "version": "1.0.0",
4 "description": "",
5 "main": "main.js",
6 "scripts": {
7 "dev": "webpack --watch --progress"
8 },
9 "devDependencies": {
10 "@babel/core": "^7.2.2",
11 "@babel/preset-env": "^7.2.3",
12 "@babel/preset-react": "^7.0.0",
13 "babel-loader": "^8.0.5",
14 "css-loader": "^2.1.0",
15 "file-loader": "^3.0.1",
16 "html-webpack-plugin": "^3.2.0",
17 "style-loader": "^0.23.1",
18 "url-loader": "^1.1.2",
19 "webpack": "^4.28.4",
20 "webpack-cli": "^3.2.1"
21 },
22 "dependencies": {
23 "react": "^16.7.0",
24 "react-dom": "^16.7.0"
25 },
26 "author": "",
27 "license": "ISC"
28}
10.此时在命令行工具里面运行如下命令
xxxxxxxxxx
51npm run dev
2将会在当前的文件夹里面生成一个dist的文件夹,里面会有两个文件
3一个是index.html
4一个是hebing.js
5打开index.html你就会看到你想看到的内容
1.React 是一个用于构建用户界面的 JAVASCRIPT 库。
2.React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图)。
3.React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。
4.React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。
1.声明式设计 −React采用声明范式,可以轻松描述应用。
2.高效 −React通过对DOM的模拟,最大限度地减少与DOM的交互。
3.灵活 −React可以与已知的库或框架很好地配合。
4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。
5.组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
6.单向响应的数据流 − React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。
7.使用Diff算法处理数据 -计算出Virtual DOM中真正变化的部分,并只针对该部分进行原生DOM操作,而非重新渲染整个页面
xxxxxxxxxx
11const ele =<div style={{width:200,height:300,backgroundColor:'red'}}>Hello World</div>
xxxxxxxxxx
71const box = {
2 width:200,
3 height:300,
4 backgroundColor:'purple'
5}
6
7const ele =<div style={box}>以内嵌的方式来设置样式</div>
xxxxxxxxxx
71// 写在一个单独的文件当中,比如index.css,在main.js当中引入这个样式文件
2.box {
3 width: 600px;
4 height: 300px;
5 background-color: orangered;
6 border-radius: 50%; /*设置边框的变化*/
7}
xxxxxxxxxx
241import React from 'react' // 写完了这行代码之后,打包工具默认就会到当前项目文件夹中的node_modules去查找对应的模块
2import ReactDOM from 'react-dom' // 与解析dom相关的模块
3
4// const ele = <div><p>这是一个段落标签</p><span>112233</span></div>
5const ele =
6(<div>
7 <h2>师资实训</h2>
8 <p>这是一个段落标签</p>
9 <span>112233</span>
10 <div>
11 <ul>
12 <li>10</li>
13 <li>20</li>
14 <li>30</li>
15 </ul>
16 </div>
17</div>)
18
19// 如果有标签的嵌套,推荐使用()括起来,这样方便维护
20
21ReactDOM.render(
22 ele,
23 document.getElementById('app') // 使用id的方式来获取页面中的元
24)
xxxxxxxxxx
231import React from 'react'
2import ReactDOM from 'react-dom'
3
4
5// const ele = <input type="button" value="按钮" onClick={alert(200)} /> // 此种写法会让事件立即执行
6
7
8// 在行内直接注册一个简单的事件 写法如下:
9// const ele = <input type="button" value="按钮" onClick={function(){alert('单击之后才会触发')}} />
10
11
12// 如果事件函数中的代码非常多的话,可以将代码放在一个单独的函数当中,比如foo函数
13
14const ele = <input type="button" value="按钮" onClick={foo} />
15
16function foo() {
17 alert('单击之后才会触发')
18}
19
20ReactDOM.render(
21 ele,
22 document.getElementById('app')
23)
21ctrl + shift + d 复制当前行到下一行
2ctrl + d 依次选中和之前项一样的内容