node中模块系统:
1.模块系统:核心模块、第三方模块、 自己写的模块。
2.网页中所有的路径都是URL,而不是文件路径。
3.node偏底层开发,开启的服务器完全是一个黑盒子,所有的资源默认都是不能被用户访问的,必须自己编写代码设计开放资源。
4.在node中实现服务器重定向:header(‘location’,‘地址’) , 301----永久重定向 302----临时重定向
5.模块系统:模块作用域 使用require()加载模块 使用exports接口对象导出模块中的成员。
在一个模块中是无法使用另一个模块中的成员的,如果真的需要使用,必须使用exports导出才可以在另一个模块中使用,如:
导出add方法:function add(x,y){
return x + y;
}
exports.ad = add;
6.导出多个成员和导出一个成员:
对于希望被其他模块访问到的成员,必须挂载到exports接口对象中导出,如:exports.a = ‘123’;
exports.b = 3333;
exports.c = function(){};
exports.b = {};
7.默认导出的是一个对象,如果需要导出一个成员那么就要重新赋值:module.exports = ‘新的值’,
module.exports 使用多次也是无效的,因为后面的会覆盖前面的,当然可以使用对象的方式导出多个成员,如:
module.expirts = {
add:function(){},
a:‘123’,
b:123,
c:{},
d:[]
};
8.require()优先从缓存加载,require()每次在加载的时候先在缓存中找是否加载过,如果加载过直接拿来用,否则在加载,体现模块系统的高效。
9.require(‘./test.js’)加载自己写的模块时,括号里面是路径,必须以./或者…/开始,不能省略,加载核心模块时括号里面不是路径,直接写模块名就可以。
加载第三方模块时,括号里面写安装的包名,第三方模块实际加载的是:当前文件所在目录中的node_modules目录 --> art-template --> package.json文件中main属性所指向的index.js文件。
在命令窗口执行node.js文件:
在命令行执行node.js代码只需键入:node +文件名(node.js文件不能以node.js命名,文件的后缀名可以省略) 即可,打开命令行的三种方式:
1.window + r -> cmd回车
2.在当前文件目录鼠标右键通过Git打开
3.shift + 鼠标右键 ->在此处打开Powershell窗口,下面将初步介绍几种基本语法和常用模块:
核心模块:
node为js提供很多服务器级别的API,这些API绝大多数被包装到一个具名的核心模块中,例如文件操作的fs模块,http服务构建的http模块,path路劲操作模块;加载模块使用:require(‘模块名’),通过此方法也可以相互加载nodejs文件,更多模块了解可阅读:https://nodejs.org官方文档;如下模块:
// 在命令窗口打开文件执行以下代码:
// 1.执行简单代码并测试window和document在node中是否存在:
var str = 'hello';
console.log(str); //hello
console.log(window); //ReferenceError: window is not defined at Object.
console.log(document); //ReferenceError: document is not defined at Object.
// 2.载入内置fs文件模块:
const fs = require('fs');
fs.readFile('../测试.txt', function(errors, datas) {
//readFile读取文件,里面可以传入两参数,第一个为文件路径;第二个为回调函数(回调函数中第一个参数为读取失败时的错误对象,读取成功时为null;第二个参数为读取成功时的数据,读取失败时为undefined)
if (errors) {
console.log('文件读取失败!');
return false;
} else {
console.log('读取文件内容为:' + datas); //有的时候可能会返回二进制数据经计算机转为十六进制数据,此时可以使用.toString()将其转为我们可以认识的字符
};
});
fs.writeFile('./<>.txt', '苦海1', function(error) {
//writeFile写入文件,里面可传入三个参数,一为文件路径;二为写入文件的字符;三为回调函数(回调函数中只有一个参数,写入成功时为null,写入失败时为错误对象),注意:如果没有路径指向的文件,则会自动创建文件并写入内容,除非文件命名失败才会写入失败。
if (error != null