认识node
一、认识node
node是一个基于Chrome V8引擎的JavaScript代码运行环境。
- 浏览器(软件)能够运行JavaScript代码,浏览器就是JavaScript代码的运行环境(js是一个客户端语言)
- node(软件)能够运行JavaScript代码,node就是JavaScript代码的运行环境(js是一个服务器端语言)
二、为什么选择node
- 使用JavaScript语法开发后端应用
- 前端开发工具大多基于Node开发 vue打包 react打包等(学会安装第三方包)
- 一些公司要求前端工程师掌握Node开发
- 生态系统活跃,有大量开源库可以使用
三、node运行环境搭建
3.1 node.js运行环境安装
去官网找到自己环境需要包Node.js 中文网,下载稳定版
四、node.js快速入门
javaScript的标准是ECMAScript,浏览器可以解析js 提供dom bom,node可以解析js提供一些附加的API。
node.js基础语法
搭建基本服务
// 引入模块 var http=require('http') // 搭建服务 var app=http.createServer(function(请求,响应){响应.end('<h1>hello node server run </h1>'); }) // 监听端口 app.listen('3000')
- 在当前文件夹下,地址栏 cmd 回车 打开命令行
- 在命令行写入 node 当前文件名 回车
- 打开游戏器,地址栏输入127.0.0.1:3000 回车
可以看到欢迎页面
五、node.js模块化开发
5.1 JavaScript开发弊端
javaScript在早期的设计中就没有模块、包、类的概念,开发者需要模拟出类似的功能,来隔离、组织复杂的JavaScript代码,我们称为模块化
5.2 模块化的概念
一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他功能的运行。
5.3 node.js中模块化开发规范
node的应用是模块组成的,用来隔离每个模块的作用域,使每一个模块在自身的命名空间中执行。
- 在 node 的开发过程中,我们是把每一个功能独立做成一个模块
- 然后在使用 导入导出 的方式把他们关联在一起
-
- 利于维护
- 准确定位
- 我们一般把模块分为三种
-
- 内置模块 (node 天生就带有的模块)
- 自定义模块 (我们自己写的文件)
-
- 第三方模块 (从网上下载的别人写好的模块)
5.4 自定义模块
noe自定义模块遵循Commonjs规范。
Commonjs规范是什么:
- 每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见
- 模块必须通过module.exports导出对外的变量或接口,通过require()来导入其他模块的输出到当前模块作用域中。
CommonJS 模块化的写法,需要 node 等环境支持。在浏览器中无法直接解析和运行,需要先编译
5.4.1 Commonjs模块化导出语法:
语法一:
aaa.js
module.exports = { // 在此对象中定义导出的变量或函数
flag:true,
name:"xxx",
add(num1, num2){
returnnum1 + num2;
},
}
语法二:
通过exports来向外部暴露变量和方法,只需要暴露给外部的属性和方法设置为exports的属性即可
yyy.js
exports.x = '我是你的哈哈';
exports.y = '我是y'
exports.fn = function(){
console.log('我是fn函数')
}
5.4.2 Commonjs模块化导入语法:
语法:
使用require()引入模块以后,该函数会返回一个对象,这个对象代表的是引入的模块
var xxx = require('./yyy.js')
console(xxx)
5.5 系统模块
什么是系统模块:node运行环境提供的API. 因为这些API都是以模块化的方式进行开发的, 所以我们又称Node运行环境提供的API为系统模块。
5.5.1 系统模块fs文件操作
系统模块读文件:
const fs = require('fs');
//读操作
fs.reaFile('文件路径/文件名称'[,'文件编码'], callback);
fs.readFile('../index.html', "utf8", (err,data) => {
if (!err) {
console.log(data);
return;
}
});
系统模块写文件:
const content = '<h3>正在使用fs.writeFile写入文件内容</h3>';
fs.writeFile('../index.html', content, (err,data) => {
if (err) {
console.log(err);
return;
}
console.log('文件写入成功');
})
5.6 第三方模块
什么是第三方模块?
别人写好的、具有特定功能的、我们能直接使用的模块即第三方模块,由于第三方模块通常都是由多个文件组成并且被放置在一个文件夹中,所以又称为包
获取第三方包?
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功。
大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像。淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
使用淘宝 NPM 镜像:
npm install -g cnpm --registry=
使用 npm 命令安装模块:npm 安装 Node.js 模块语法格式如下:
npm install <Module Name>
package.json:package.json 位于模块的目录下,用于定义包的属性。
六、具体谈下npm?
6.1 什么是npm?
npm是前端开发广泛使用的包管理工具,它让js开发者分享、复用代码更方便。
可以重复的框架代码被称为包(package)或者模块(module),一个包可是是一个文件夹里放着几个文件
夹,还有一个package.json文件。
npm的作用就是让我们把可复用的框架代码发布到一个地方,可以供大家一起使用。
6.2 安装npm?
npm是依赖node.js的,先去官网.js,下载安
装好node,npm也有了,查看版本
node -v
v10.15.3
npm -v
6.9.0;
6.3 更新npm
npm更新速度很快,安装node附带的npm可能不是最新的,可以执行命令到最新版本
npm。install,安装;-g全局安装;npm@latest 就是 @的格式
npm install npm@latest -g
6.4 package.json文件
- 是一个包说明文件(项目描述文件),用来管理组织的一个包(一个项目)
- 是一个json格式的文件
- 位于当前项目的根目录下
6.5 package.json文件创建
- npm init就可以创建一个package.json文件,
- npm init --yes 可以跳过所有的问题
npm init会弹出很多问题,可以输入对应的内容,也可以直接enter回车使用默认值,回答
所有的问题,最后输入yes就会生成package.json文件
6.6 package.json内容
- description:描述信息,有助于搜索
- main:入口文件,一般都是index.js
- scripts:支持的脚本,默认是一个空的test
- author:作者信息
- license:默认是MIT
- keywords:关键字,有助于人们使用npm search搜索时候发现你的项目
6.7 指定依赖的包
我们需要在package.json文件中指定项目依赖的包,别人拿到项目的时候,可以使用npm install直接下载有依赖
包依赖有2种方式
- dependencies,在生产环境中需要用到的依赖
- devDependencies,在开发、测试环境中用到的依赖
命令 npm install --save 安装时,将信息写入package.json中的dependencies中。
命令 npm install --save-dev 安装,将信息写入package.json中的devDependencies中。
"dependencies": { "connect-history-api-fallback": "^1.6.0", "vue": "^2.5.22", "vue-awesome-mui": "^1.7.3", "vue-router": "^3.0.1", "vuex": "^3.0.1" }, "devDependencies": { "@vue/cli-plugin-babel": "^3.4.0", "@vue/cli-plugin-eslint": "^3.4.0", "@vue/cli-service": "^3.4.0", "babel-eslint": "^10.0.1", "eslint": "^5.8.0", "eslint-plugin-vue": "^5.0.0", "expose-loader": "^0.7.5", }
npm uninstall 包名 只删除,如果有依赖,依然保存
npm uninstall --save 包名 删除的同时把依赖信息给删除了
6.8 全局安装
什么是全局安装?
全局安装方式是键入命令:npm install xxx -g 时, 模块将被下载安装到【全局目录】中
可以使用npm root -g查看全局安 装目录。
1. 安装模块到全局,不会在项目node_modules目录中保存模块包。
2. 不会将模块依赖写入devDependencies或dependencies 节点。
认识node
一、认识node
node是一个基于Chrome V8引擎的JavaScript代码运行环境。
- 浏览器(软件)能够运行JavaScript代码,浏览器就是JavaScript代码的运行环境(js是一个客户端语言)
- node(软件)能够运行JavaScript代码,node就是JavaScript代码的运行环境(js是一个服务器端语言)
二、为什么选择node
- 使用JavaScript语法开发后端应用
- 前端开发工具大多基于Node开发 vue打包 react打包等(学会安装第三方包)
- 一些公司要求前端工程师掌握Node开发
- 生态系统活跃,有大量开源库可以使用
三、node运行环境搭建
3.1 node.js运行环境安装
去官网找到自己环境需要包Node.js 中文网,下载稳定版
四、node.js快速入门
javaScript的标准是ECMAScript,浏览器可以解析js 提供dom bom,node可以解析js提供一些附加的API。
node.js基础语法
搭建基本服务
// 引入模块 var http=require('http') // 搭建服务 var app=http.createServer(function(请求,响应){响应.end('<h1>hello node server run </h1>'); }) // 监听端口 app.listen('3000')
- 在当前文件夹下,地址栏 cmd 回车 打开命令行
- 在命令行写入 node 当前文件名 回车
- 打开游戏器,地址栏输入127.0.0.1:3000 回车
可以看到欢迎页面
五、node.js模块化开发
5.1 JavaScript开发弊端
javaScript在早期的设计中就没有模块、包、类的概念,开发者需要模拟出类似的功能,来隔离、组织复杂的JavaScript代码,我们称为模块化
5.2 模块化的概念
一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他功能的运行。
5.3 node.js中模块化开发规范
node的应用是模块组成的,用来隔离每个模块的作用域,使每一个模块在自身的命名空间中执行。
- 在 node 的开发过程中,我们是把每一个功能独立做成一个模块
- 然后在使用 导入导出 的方式把他们关联在一起
-
- 利于维护
- 准确定位
- 我们一般把模块分为三种
-
- 内置模块 (node 天生就带有的模块)
- 自定义模块 (我们自己写的文件)
-
- 第三方模块 (从网上下载的别人写好的模块)
5.4 自定义模块
noe自定义模块遵循Commonjs规范。
Commonjs规范是什么:
- 每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见
- 模块必须通过module.exports导出对外的变量或接口,通过require()来导入其他模块的输出到当前模块作用域中。
CommonJS 模块化的写法,需要 node 等环境支持。在浏览器中无法直接解析和运行,需要先编译
5.4.1 Commonjs模块化导出语法:
语法一:
aaa.js
module.exports = { // 在此对象中定义导出的变量或函数
flag:true,
name:"xxx",
add(num1, num2){
returnnum1 + num2;
},
}
语法二:
通过exports来向外部暴露变量和方法,只需要暴露给外部的属性和方法设置为exports的属性即可
yyy.js
exports.x = '我是你的哈哈';
exports.y = '我是y'
exports.fn = function(){
console.log('我是fn函数')
}
5.4.2 Commonjs模块化导入语法:
语法:
使用require()引入模块以后,该函数会返回一个对象,这个对象代表的是引入的模块
var xxx = require('./yyy.js')
console(xxx)
5.5 系统模块
什么是系统模块:node运行环境提供的API. 因为这些API都是以模块化的方式进行开发的, 所以我们又称Node运行环境提供的API为系统模块。
5.5.1 系统模块fs文件操作
系统模块读文件:
const fs = require('fs');
//读操作
fs.reaFile('文件路径/文件名称'[,'文件编码'], callback);
fs.readFile('../index.html', "utf8", (err,data) => {
if (!err) {
console.log(data);
return;
}
});
系统模块写文件:
const content = '<h3>正在使用fs.writeFile写入文件内容</h3>';
fs.writeFile('../index.html', content, (err,data) => {
if (err) {
console.log(err);
return;
}
console.log('文件写入成功');
})
5.6 第三方模块
什么是第三方模块?
别人写好的、具有特定功能的、我们能直接使用的模块即第三方模块,由于第三方模块通常都是由多个文件组成并且被放置在一个文件夹中,所以又称为包
获取第三方包?
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功。
大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像。淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
使用淘宝 NPM 镜像:
npm install -g cnpm --registry=
使用 npm 命令安装模块:npm 安装 Node.js 模块语法格式如下:
npm install <Module Name>
package.json:package.json 位于模块的目录下,用于定义包的属性。
六、具体谈下npm?
6.1 什么是npm?
npm是前端开发广泛使用的包管理工具,它让js开发者分享、复用代码更方便。
可以重复的框架代码被称为包(package)或者模块(module),一个包可是是一个文件夹里放着几个文件
夹,还有一个package.json文件。
npm的作用就是让我们把可复用的框架代码发布到一个地方,可以供大家一起使用。
6.2 安装npm?
npm是依赖node.js的,先去官网.js,下载安
装好node,npm也有了,查看版本
node -v
v10.15.3
npm -v
6.9.0;
6.3 更新npm
npm更新速度很快,安装node附带的npm可能不是最新的,可以执行命令到最新版本
npm。install,安装;-g全局安装;npm@latest 就是 @的格式
npm install npm@latest -g
6.4 package.json文件
- 是一个包说明文件(项目描述文件),用来管理组织的一个包(一个项目)
- 是一个json格式的文件
- 位于当前项目的根目录下
6.5 package.json文件创建
- npm init就可以创建一个package.json文件,
- npm init --yes 可以跳过所有的问题
npm init会弹出很多问题,可以输入对应的内容,也可以直接enter回车使用默认值,回答
所有的问题,最后输入yes就会生成package.json文件
6.6 package.json内容
- description:描述信息,有助于搜索
- main:入口文件,一般都是index.js
- scripts:支持的脚本,默认是一个空的test
- author:作者信息
- license:默认是MIT
- keywords:关键字,有助于人们使用npm search搜索时候发现你的项目
6.7 指定依赖的包
我们需要在package.json文件中指定项目依赖的包,别人拿到项目的时候,可以使用npm install直接下载有依赖
包依赖有2种方式
- dependencies,在生产环境中需要用到的依赖
- devDependencies,在开发、测试环境中用到的依赖
命令 npm install --save 安装时,将信息写入package.json中的dependencies中。
命令 npm install --save-dev 安装,将信息写入package.json中的devDependencies中。
"dependencies": { "connect-history-api-fallback": "^1.6.0", "vue": "^2.5.22", "vue-awesome-mui": "^1.7.3", "vue-router": "^3.0.1", "vuex": "^3.0.1" }, "devDependencies": { "@vue/cli-plugin-babel": "^3.4.0", "@vue/cli-plugin-eslint": "^3.4.0", "@vue/cli-service": "^3.4.0", "babel-eslint": "^10.0.1", "eslint": "^5.8.0", "eslint-plugin-vue": "^5.0.0", "expose-loader": "^0.7.5", }
npm uninstall 包名 只删除,如果有依赖,依然保存
npm uninstall --save 包名 删除的同时把依赖信息给删除了
6.8 全局安装
什么是全局安装?
全局安装方式是键入命令:npm install xxx -g 时, 模块将被下载安装到【全局目录】中
可以使用npm root -g查看全局安 装目录。
1. 安装模块到全局,不会在项目node_modules目录中保存模块包。
2. 不会将模块依赖写入devDependencies或dependencies 节点。