1.为什么JavaScript可以在浏览器中被执行
不同的浏览器使用不同的JavaScript解析引擎:
chrome浏览器 ==> V8 (最好)
Firefox浏览器 => DdinMonkey(奥丁猴)
Safri浏览器 => JSCore
IE浏览器 => Chakra(查克拉)
...
2.
什么是Node.js
node.js是一个基于chrome V8引擎的JavaScript运行环境
运行环境
模块化
概念:模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更新的单元。
· 编程领域中的模块化,就是遵循固定的规则,把一个大文件拆分成独立并互相依赖的多个小模块。
· 好处:
1.提高了代码的复用性
2.提高了代码的可维护性
3.可以实现按需加载
模块化的规范
分类
· 内置模块(内置模块是由node.js官方提供的,例如 fs , path , http 等)
· 自定义模块(用户创建的每个 .js文件,都是自定义模块 )
· 第三方模块(由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载)
加载模块
使用强大的require()方法,可以加载内置模块、自定义模块、第三方模块进行使用。
const ×× = require('××')
向外共享模块作用域中的成员
1.module对象
在每个 .js 自定义模块中都有一个module对象,它里面存储了和当前模块有关的信息
console.log(module)
2.module.exports对象
在自定义模块中,可以使用module.exports对象,将模块内的成员共享出来,供外界使用。
外界使用require()方法导入自定义模块时,得到的就是module.exports所指向的对象。
(自定义模块.js)
//向module.exports对象上挂载username属性
module.exports.username = 'zs'
//向module.exports对象上挂载sayHello方法
module.exports.sayHello = function(){
console.log('Hello!')
}
(test.js)
const m = require('./自定义模块')
console.log(m)
exports 和 module.exports 的使用误区
时刻谨记,require() 模块时,得到的永远是module,exports指向的对象
包(第三方开发出来的)
· 包是基于内置模块封装出来的,提供了更高级、更方便的API,极大的提高了开发效率。
在哪搜索下载? 搜索www.npmjs.com 全球最大的包共享平台
下载 : registry.npmjs.org
npm -v (npm 包管理工具,就可下载包)
格式化时间的高级做法
//导入moment 包
const moment = require('moment')
//调用format()方法
const dt = moment().format('YYY-MM-DD HH:mm:SS')
const.log(dt)
安装包的命令
npm install 包的全名称
npm i 包的全名称
const moment=require('moment')
const s=moment().format('YYYY-MM-DD HH:mm:ss')
console.log (s)
安装包后项目将多一个叫node_modules的文件和package-lock,json的配置文件。
node_modules的文件用来存放所有已安装到项目中的包。require()导入第三方包时,就是从这个文件目录中查找并加载包
package-lock,json的配置文件用来记录node_modules目录下的每个包的下载信息,例如包的名字、版本号、下载地址等。
包的语义化版本规划
包的版本号是以“点分十进制”形式进行定义的,总共有三位数,例如2.24.0
第一个数字:大版本
第二个数字:功能版本
第三个数字:bug修复版本(个数)
只要前面的版本号增长了,则后面的版本号归零
卸载包
npm uninstall 包的完整名称
devDependencies节点
如果某些包只在开发阶段会用到,在项目上线之后不会用到,则建议把这些包记录到devDependencies节点中。与之对应的是,项目上线后还需要的,则建议把 这些包记录到dependencies节点中。
npm i 包名 -D
npm install 包名 --save-dev
(devDependencies)
下包镜像源
查看当前的下包镜像源
将下包的镜像源切换到淘宝的镜像源
npm config set registry=https://registry.npm.taobao.org/
nrm
通过npm包资源管理器,将nrm安装为全局可用的工具
npm i nrm -g
查看所有可用的镜像源
nrm ls
将下包的镜像源切换为taobao镜像
nrm use taobao
全局包
在执行npm install 命令时,如果提供了-g 参数,则会把包安装为全局包
全局包会被安装到C:\Users\用户目录\AppData\Roaming\npm\node_modules目录下
npm i 包名 -g
npm uninstall 包名 -g
express
用来创建web服务器
对于前端程序员来说,最常见的两种服务器:
1.web网站服务器:专门对外提供web网页资源的服务器
2.API接口服务器:专门对外提供API接口的服务器
安装
npm i express@4.17.1
创建基本的web服务器
//导入express
const express=require('express')
//创建web服务器
const app=express()
//调用app.listen(端口号,启用成功后的回调函数) 启动服务器
app.listen(80,() =>{
console.log('express server running at http://127.0.0.1')
}
)