day03
1、如果一个模块想要使用另一个模块中方法或变量,需要通过exports
去挂载
使用对象之中的成员必须是.成员
//foo.js文件
var foo = 'abc'
function add(x, y) {
return x + y
}
exports.foo = foo
exports.add = add
//main.js文件
var mainOfFoo = require('./foo')
console.log(mainOfFoo)
console.log(mainOfFoo.foo)
console.log(mainOfFoo.add(12, 34))
结果:
{ foo: 'abc', foo2: 123, add: [Function: add] }
abc
46
2、若一个模块想直接访问某个模块中成员,使用module.exports
function add(x, y) {
return x + y
}
module.exports = add
var mainOfFoo = require('./foo')
console.log(mainOfFoo(1,4))
★
module.exports === exports ---> 二者等价
module.exports === exports // true
★
当我们需要导出单个成员时:exports
就不管用了,此时只能使用module.exports
(相当于最后返回的是module.exports)
★★★推荐以后都是用module.exports
module.exports = {
foo: 'bar',
add: function(){
}
}
3、 jQuery中each和原生javascript中forEach区别
- forEach:是ecmaScript 5提供的,不兼容IE8
- each:是由jquery这个第三方库提供的
遍历方法
//jquery中
$().each(funcion(index, item){
})
//nodejs中
var array = []
array.forEach(function(item, index){
})
4、require 方法加载规则
- 优先从缓存中加载:模块加载前先判断缓存中是否加载过,若有就不要在加载,直接使用;若没有,没有再去加载
- 判断模块标识
- 核心模块:os、fs、http等
- 第三方模块:art-template
- 自己写的模块:自己写的js文件等
5、npm使用-node package manager
//在那里运行就会安装到该路径下的node_modules中
npm install art-template
//安装bootstrap
npm install bootstrap
//安装指定版本
npm install jquery@1.11.0
//简写
npm i jquery@1.11.0
//使用--save会在package.json文件保存一个属性
//dependencies:存放了该项目依赖的第三方包名、版本信息
npm install art-template --save
//生成package.json,包含项目一些信息
npm init -y // 快速生成,跳过向导
npm init // 需要手动设置一些信息
若node_module被删除,我们可以通过npm install
来自动将package.json
中dependencies
目中的依赖包安装
//网站:npmjs.com
//查询版本号
npm --version
//升级npm
npm install --global npm
package.json
和 package-lock.json
区别
npm5之前没有package-lock.json文件
npm5之后才加入文件。
当安装包时,npm都会生成或者更新package-lock.json
这个文件
- npm5以后不需要加
--save
参数,会自动保存依赖信息 - 当安装包时,会自动创建或者更新
package-lock.json
文件 package-lock.json
文件会保存node_modules
中所有包的信息(版本、下载地址)- 这样重新下载
npm install
,速度会加快提升
- 这样重新下载
- 从文件来看 ,
lock
会锁定包的版本
npm常用命令
解决npm被墙问题
安装淘宝cnpm
// 任意目录都行
npm install --global cnpm
以后使用cnpm替代npm
//还是使用国外npm服务器
npm install jquery
//使用国内淘宝服务器镜像
cnpm install jquery
5、Express
//安装、引包
var express = require('express')
//创建服务器应用----http.createServer()
var app = express()
app.get('/', function (req, res) {
res.end("good express")
})
app.get('/about', function (req, res) {
res.end("about me///")
})
//相当于http.listen()
app.listen(3000, function () {
console.log("strat running ...")
})