模板模块(自定义文件模块)
在 Node 中没有全局作用域的概念,可以通过 require 方法来加载执行多个 JavaScript 脚本文件。
require 加载只能是执行其中的代码,文件与文件之间由于是模块作用域,所以不会有污染的问题:
- 模块完全是封闭的
- 外部无法访问内部
- 内部也无法访问外部
- 可以加载执行多个文件,可以完全避免变量命名冲突污染的问题
模块之间的通信,通过每个模块中提供的一个对象:exports
,该默认是一个空对象,我们可以把需要被外部访问使用的成员手动的挂载到 exports
接口对象中,之后谁来 require
这个模块,谁就可以得到模块内部的 exports 接口对象。
exports与module.exports
在node中,每个模块都有自己的module对象,而在module对象中也有一个成员加exports对象 。谁来require我,谁就默认得到module.exports所存的成员 。
最终导出的永远是module.exports ,而node中exports就是一个变量,该变量=module.exports
console.log(exports===module.exports); //true
什么时候使用exports与module.exports总结:
1.导出多个成员:export.成员名=xxxx 导出的永远是对象
2.导出单个成员:module.exports=xxxx 会直接接受某个成员而不是对象,module.exports也可以导出多个成员如:module.exports={num:1,fn:function()}
关于包文件说明npm命令
npm init
生成一个package.json 进行问答环节npm init -y
快速生成描述说明,所有问答环节都为yes- 关于
pack-lock.json
文件看成包的详细描述,尽量不删除
package.json
{
"name": "demo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "hhh",
"license": "ISC",
"dependencies": {
"bootstrap": "^3.3.7"
}
}
package.json属性说明
name - 包名.
version - 包的版本号。
description - 包的描述。
homepage - 包的官网URL。
author - 包的作者,它的值是你在https://npmjs.org网站的有效账户名,遵循“账户名<邮件>”的规则,例如:zhangsan <zhangsan@163.com>。
contributors - 包的其他贡献者。
dependencies / devDependencies - 生产/开发环境依赖包列表。它们将会被安装在 node_module 目录下。
repository - 包代码的Repo信息,包括type和URL,type可以是git或svn,URL则是包的Repo地址。
main - main 字段指定了程序的主入口文件,require('moduleName') 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
keywords - 关键字
package-lock.json
{
"name": "demo",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"bootstrap": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz",
"integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E="
}
}
}
package.json文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,你每次npm install都是拉取的该大版本下的最新的版本,为了稳定性考虑我们几乎是不敢随意升级依赖包的,这将导致多出来很多工作量,测试/适配等,所以package-lock.json文件出来了,当你每次安装一个依赖的时候就锁定在你安装的这个版本。
- 如果项目中
node_modules
文件被删除了,是可以通过npm install
来重新下载所有该项目的依赖文件,要与pack-lock.json和package.json在同一目录 npm install name -save
简写(npm install name -S
)
自动把模块和版本号添加到dependencies。注意:npm5版本以后的 -S可以省略。npm install name -save-dve
简写(npm install name -D
)
自动把模块和版本号添加到devdependencies
-D后,安装包会在package中的 devDependencies对象中。简称dev。dev是在开发环境中要用到的。
如构建工具:gulp和webpack是用来压缩代码,打包等需要的工具,程序实际运行的时候并不需要,就要放在dev中所以要用 -D
-S后,安装包会在package中的 dependencies 对象中。简称dep。dep是在生产环境中要用到的。
如项目插件:例如element ui、echarts这种插件要在运行中使用的,就要放在dep中所以就用 -S
- npm install nodemon -g 这里的-g是全局安装
art-template模板引擎
- 通过npm安装模板引擎 (npm: 包管理工具 . 能帮你下载你所需要的包)npm install art-template 通过npm安装模板引擎这个包 统称为第三方包 简写 npm i art-template。 该命令在哪执行就会把包下载到哪里 默认下载到node_modules中。不能更改的
- 在html使用简洁语法
<script type="text/html" id="data">
<h1>{{name}}</h1>
<h1>{{age=="18"?"ok":"不ok"}}</h1>
//循环
{{each like}}
<div>
//判断
{{ if( $index == 1) }}
<div> {{ $value }} </div>
{{ /if }}
//三元表达式
{{$value.like=="唱歌"?"ok":"on"}}
</div>
{{ /each }}
</script>
<script src="./node_modules/art-template/lib/template-web.js"></script>
<script>
var html = template('data',{
name: "张三",
age:'18岁',
like:["唱歌","跳舞","敲代码"]
});
console.log(html);
</script>
淘宝镜像
官网: http://npm.taobao.org/
1 从npm下载包主要是从国外网站下载,下载速度会慢很多,淘宝镜像就是可以通过国内来下载包
2 安装淘宝镜像cnpm,命令: npm install -g cnpm --registry=https://registry.npm.taobao.org
3 当再安装包时,可以把npm换成cnpm进行安装就好
例如:npm install bootstrap 可以换成:cnpm install bootstrap
关于nodemon工具
1 问题:修改完代码后都要手动启动
2 解决:使用nodemon工具来让你的代码自动重启,它会自动监听,当你的代码发生改变时,就会自动重启
3 安装 npm i nodemon -g
4 启动服务器:如 nodemon app.js