Node.js基础(二)

模板模块(自定义文件模块)

在 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模板引擎

  1. 通过npm安装模板引擎 (npm: 包管理工具 . 能帮你下载你所需要的包)npm install art-template 通过npm安装模板引擎这个包 统称为第三方包 简写 npm i art-template。 该命令在哪执行就会把包下载到哪里 默认下载到node_modules中。不能更改的
  2. 在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值