一. Node 核心模块介绍
1. fs 文件数据读取模块
a. 数据读取
1. 引入fs模块
var fs = require('fs')
数据读取 fs.readFile(路径, callBack(error, data))
返回二进制数据
fs.readFile('./hello.txt', function(error, data){
if(error){
console.log('error', error)
}
if(data){
console.log('data', data) // data <Buffer 68 65 6c 6c 6f 20 6e 6f 64 65 2e 6a 73>
console.log('data', data.toString()) // data hello node.js
}
})
b. 数据写入
数据写入fs.writeFile(路径, 数据, callBack(error))
fs.writeFile('./hello.txt', '是否写入成功', function(error){
if(error){
console.log('写入error', error)
}else{
console.log('写入success')
}
})
2. http 模块使用
a. 构建web服务器
1. 引入http
var http = require('http')
2. 创建web服务器
var server = http.createServer()
3. 注册request请求
a. 响应客户端请求,必须以end()结束,否则客户端会一直等待回应,par只能为二进制数据和字符串类型
b. request.url 为请求的路径
server.on('request', function(request, response){
console.log('收到客户端的请求', request.url)
response.write('hello')
response.write('My First')
response.end(par)
})
4. 启动服务
server.listen(3000, function(){
console.log('服务器启动成功,可以进行访问')
})
- 测试
a. cd到当期文件目录
b. node 文件名.js, 查看服务器是否正常 例如:node index.js
c. 在浏览器中输入localhost:3000查看打印是否正常
3. url模块使用
1. 引入url 模块
var url = require('url')
2. url 解析结果
var obj = url.parse('/products?name=ere&message=erere')
console.log(obj)
解析结果
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '?name=ere&message=erere',
query: name=ere&message=erere,
pathname: '/pinglun',
path: '/pinglun?name=ere&message=erere',
3. url.parse(路径, true) ,观察query属性
var obj = url.parse('/products?name=ere&message=erere', true)
console.log(obj)
解析结果
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '?name=ere&message=erere',
query: { name: 'ere', message: 'erere' },
pathname: '/pinglun',
path: '/pinglun?name=ere&message=erere',
4. 模块化
1. exports 和 Module.exports 的联系与区别
每个模块中都有一个module对象,可以把需要导出的成员都挂载到 module.exports 接口对象中
moudle.exports.xxx = xxx
但这样使用起来有点麻烦, Node 为使用方便,同时在每一个模块中都提供了一个成员叫:exports
exports === module.exports
当一个模块要导出单个成员的时候,必须使用module.exports = xxx
的形式,exports = xxx
这种方法是不起作用的,module.exports=xxx
的方式可以导出单个成员,exports
只能通过exports.xxx
的方式导出
2. 模块作用域
模块中定义的变量只在本模块中生效,在其他模块无法访问,没有全局作用域,只有模块作用域,可以使用通过exports.xxx = xxx
的方法导出,在其他模块通过require('模块名')
引入使用
二. npm 配置简单介绍
a. 项目快速构建
1. mkdir 创建子目录
2. npm init / npm init -y 区别
npm init
可以生成package.json
包描述文件,此文件中可以声明项目的入口函数以及一些使用的依赖信息,npm init
和npm init -y
不同之处在于前者是使用向导的方式一步一步引导设置,后者则是快速创建文件,可以创建过后修改信息
3. npm install / npm install + 包名 / npm install --save + 包名
npm install
用来安装node_modules
第三方模块
npm install + 包名
安装所需要使用的第三方包,例如:npm install jQuery
,但是此种方法安装方法不会再package.json
的包描述文件添加相应的依赖,如果此时将node_modules
删除的话,无法获取到相应依赖的信息,只能手动重新添加
npm install --save + 包名
此命令也是安装需要的第三方包, 此方法可以在package.json
中的devDependencies
项中添加相应的依赖信息,即使删除node_modules
也可通过npm install
直接安装三方库,无需每个手动安装推荐