官网 : https://nodejs.org/zh-cn/
npm install jquery
node --version
或简写 node -v
var str='Hello World';
console.log(str);
node 文件名
执行对应的文件注意 : 文件名不能使用 node.js
来命名 , 最好也不要使用中文.
// 读取文件
//浏览器中的 JavaScript 没有文件操作的能力
//但是 Node 的 JavaScript 具有文件操作的能力
// fs 是 file-system 的简写, 就是文件系统的意思
// 在 Node 中如果想要进行文件操作,就必须引入 fs 这个核心模块
// 在 fs 这个核心模块中,就提供了所有的文件操纵相关的API
//1. 使用 require 方法加载 fs 核心模块
var fs = require('fs');
//2. 读取文件
// 参数一 : 读取文件的路径
// 参数二 : 回调函数
// error:
// 如果读取失败,error就是错误对象
// 如果读取成功,error就是null
// data:
// 如果读取成功,data就是读取到的数据
// 如果读取失败,data就是undefined
fs.readFile('../note/Node.JS.md',function(error,data){
//默认文件存储的都是二进制数据 0 1
//可以通过 toString 方法转换为字符串
//通过判断 error 是否为 null 判断是否有错误
if(error){
console.log('读取文件失败');
return
}
console.log(data.toString());
});
//3. 写文件
// 参数一 : 文件路径
// 参数二 : 文件内容
// 参数三 : 回调函数
// 接收参数 : error 错误对象
// 成功 : 文件写入成功 error 为 null
// 失败 : 文件写入失败 error 为错误对象
fs.writeFile('../note/testWrite.txt',"Hello NodeJS",function(error){
if(error){
console.log("写入失败!");
}else{
console.log("写入成功!");
}
});
//构建服务器
//再 Node 中包含一个核心模块: http
//该模块的职责是帮我们创建编写服务器
//1. 加载 http 模块
var http = require('http');
//2. 使用 http.createServer() 方法创建一个 web 服务器
// 返回一个 Server 实例
var server = http.createServer();
//3. 服务器对数据的服务
//3-1. 接收请求
// ①服务器接收 request 请求.
// ②触发调用 request 的回调方法.
// ③执行第二个参数,回调处理函数.
// Request请求对象
// 回调函数接收客户端的请求信息 : 请求信息 请求路径
// Response 需要对象
// 响应对象可以用来给客户端发送响应信息
server.on('request',function(request,response){
// http://localhost:3000/ 路径为 : /
// http://localhost:3000/a 路径为 : /a
console.log('已经收到请求,请求另为'+request.url);
//发送响应 write 给客户端响应数据
//write可以使用多次,但是最后一定要使用 end 来结束响应,否则客户端会一直等待
response.write('hello');
//告知客户端已经发送完毕,可以接收了.
response.end();
});
//4. 绑定端口号,并启动服务器
// 参数一 : 端口号
// 参数二 : 启动成功调用方法
server.listen(3000,function(){
console.log('服务器启动成功,可以通过 http://localhost:3000 进行访问!');
});
在 Node 中提供很多服务器级别的 API , 这些 API 绝大多数都被包装到了一个具名的核心模块中了.
例如文件操作的 fs
核心模块, http 服务构建的 http
模块,path路径操作 path
模块,操作系统模块的os
模块…
这些模块如果要使用,必须下引用他 : 例如引入 fs 核心模块
var fs = require('fs');
各个模块都包含许多的 API : https://nodejs.org/dist/latest-v10.x/docs/api/
演示 :
写两个 JS 文件 a.js b.js , 当 a.js 需要引入 b.js 时 , 需要在使用 b.js 的地方使用 var b = require('b.js')
这时就会在执行到需要 b.js 的时候执行 b.js 中的代码 不
a.js
console.log('a start');
// 执行 b.js
require('./b.js');
// 推荐此方法
require('./b');
console.log('a end');
b.js
console.log('b start');
require('./c.js');
console.log('b end');
c.js
console.log('c start');
console.log('c end');
结果
G:\JAVA\笔记\NODE.JS\code\06_模块化>node a.js
a start
b start
c start
c end
b end
a end
但是模块之间的变量是不能共享的, 如下 :
a.js
var bExports = require('./b');
console.log(name);
b.js
var name = 'fly';
运行a.js
ReferenceError: name is not defined
at Object.<anonymous> (G:\JAVA\笔记\NODE.JS\code\07_加载与导出\a.js:2:28)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
想要通信的话,需要将被外部使用的变量挂载到 exports 中 :
修改 a.js
var bExports = require('./b');
console.log(bExports.name)
console.log(bExports.add(1,2));
修改 b.js
var name = 'fly';
exports.name = name
exports.add = function(a,b){
return a+b;
}
测试
G:\JAVA\笔记\NODE.JS\code\07_加载与导出>node a.js
fly
3
var bExports = require('./b');
console.log(bExports.name)
console.log(bExports.add(1,2));
修改 b.js
var name = 'fly';
exports.name = name
exports.add = function(a,b){
return a+b;
}
测试
G:\JAVA\笔记\NODE.JS\code\07_加载与导出>node a.js
fly
3