上次我们介绍了node 的定义和作用以及怎么安装,这次说说它的模块化系统
一、如何使用node执行js文件?
可以用cmd或git base here执行
先建一个简单的js文件,输入如下
var foo = 'hello nodejs' console.log(foo)
然后定位到该文件位置打开终端,输入 node helloworld.js——helloworld.js是文件名,操作过程如下图
注:文件名不能起名为node.js;尽量避免使用中文命名
二、在 Node 中,采用 EcmaScript 进行编码,没有 BOM、DOM
新建js文件No BOM and DOM.js,里面代码如下
console.log(window);
console.log(document)
运行
三、node读取文件
我们知道在 Node 中,采用 EcmaScript 进行编码,没有 BOM、DOM和浏览器中的 JavaScript 不一样,但它能操作文件。
node提供了几种核心模块,其中 fs(file-system 的简写,就是文件系统的意思)就提供了所有的文件操作相关的 API,这里先简单说下
使用步骤如下:
3.1使用 require 方法加载 fs 核心模块
var fs = require('fs')
3.2读取文件
fs.readFile(读取的文件路径,回调函数(error,data))
3..3结果
成功: data 数据;error null
失败:data undefined没有数据; error 错误对象
3.4 运行
js文件代码
var fs = require('fs'); fs.readFile('./data/a.txt', function (error, data) { console.log(data); })
解析:因为文件中存储的其实都是二进制数据 0 1,这里把二进制转换成十六进制了,可以通过tostring()转换下,
新的js文件代码
var fs = require('fs'); fs.readFile('./data/a.txt', function (error, data) { console.log(data.toString()); })
四、写入文件
write_wenjian.js
var fs = require('fs') // 第一个参数:文件路径 // 第二个参数:文件内容 // 第三个参数:回调函数
// 成功:
// 文件写入成功
// error 是 null
// 失败:
// 文件写入失败
// error 就是错误对象
fs.writeFile('./data/b.txt', '大家好,给大家介绍一下,我是Node.js', function (error) { console.log('文件写入成功'); console.log(error); if (error) { console.log('写入失败'); } else { console.log('写入成功了'); } })
运行
我们可以看见在data文件夹多了
五、核心模块http
node通过http模块构建一个web服务器,
一般而言服务器都是停供服务,停供对数据的服务:
过程是从客户端发请求——>服务器接收请求——>服务器处理请求——>发送响应回客户端
先来个简单点的
// 1.加载 http 核心模块
var http = require('http'); // 2. 使用 http.createServer() 方法创建一个 Web 服务器 // 返回一个 Server 实例 var server = http.createServer(); // 3. 注册 request 请求事件 // 当客户端请求过来,就会自动触发服务器的 request 请求事件,然后执行第二个参数:回调处理函数 server.on('request', function () { console.log('收到客户端的请求了'); }) // 4. 绑定端口号,启动服务器 server.listen(3000, function () { console.log('服务器启动成功了,可以通过 http://127.0.0.1:8080/ 来进行访问'); })
运行:
高级一点的写法,但不能根据不同的请求路径发送不同的响应结果
var http = require('http') var server = http.createServer() // request 请求事件处理函数,需要接收两个参数: // Request 请求对象 // 请求对象可以用来获取客户端的一些请求信息,例如请求路径 // Response 响应对象 // 响应对象可以用来给客户端发送响应消息 server.on('request', function (request, response) { console.log('收到客户端的请求了,请求路径是:' + request.url) // response 对象有一个方法:write 可以用来给客户端发送响应数据 // write 可以使用多次,但是最后一定要使用 end 来结束响应,否则客户端会一直等待 response.write('hello') response.write(' nodejs') // 告诉客户端,我的话说完了,你可以呈递给用户了 response.end() }) server.listen(3000, function () { console.log('服务器启动成功了,可以通过 http://127.0.0.1:3000/ 来进行访问') })
运行
如图,不过路径怎么改,显示永远不变
所以,用下面这种
var http = require('http') // 1. 创建 Server var server = http.createServer() // 2. 监听 request 请求事件,设置请求处理函数 server.on('request', function (req, res) { console.log('收到请求了,请求路径是:' + req.url) console.log('请求我的客户端的地址是:', req.socket.remoteAddress, req.socket.remotePort) var url = req.url if (url === '/') { res.end('index page') } else if (url === '/login') { res.end('login page') } else if (url === '/products') { var products = [{ name: '苹果 X', price: 8888 }, { name: '菠萝 X', price: 5000 }, { name: '小辣椒 X', price: 1999 } ] res.end(JSON.stringify(products)) } else { res.end('404 Not Found.') } }) // 3. 绑定端口号,启动服务 server.listen(3000, function () { console.log('服务器启动成功,可以访问了。。。') })
运行
注:响应内容只能是二进制数据或者字符串
数字、对象、数组、布尔值等需进行转化。