装修企业网站建设,如何做企业网站php,如何做房产公司网站,专业网站设计怎么做node中模块系统#xff1a;
1.模块系统#xff1a;核心模块、第三方模块、 自己写的模块。
2.网页中所有的路径都是URL#xff0c;而不是文件路径。
3.node偏底层开发#xff0c;开启的服务器完全是一个黑盒子#xff0c;所有的资源默认都是不能被用户访问的#xff0…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); //helloconsole.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;第二个参数为读取成功时的数据读取失败时为undefinedif (errors) {console.log(文件读取失败);return false;} else {console.log(读取文件内容为 datas); //有的时候可能会返回二进制数据经计算机转为十六进制数据此时可以使用.toString()将其转为我们可以认识的字符};});fs.writeFile(./.txt, 苦海1, function(error) { //writeFile写入文件里面可传入三个参数一为文件路径;二为写入文件的字符;三为回调函数回调函数中只有一个参数写入成功时为null写入失败时为错误对象,注意如果没有路径指向的文件则会自动创建文件并写入内容,除非文件命名失败才会写入失败。if (error ! null) console.log(文件写入失败!);});fs.readdir(./lib, function(error, data) { //文件路径用于访问指定路径下的文件第一个参数表示要访问到额路径第二个参数是回调函数回调函数中第一参数表示访问失败时的错误对象第二个参数表示访问成功时的成功对象console.log(error); //当访问成功时error对象是null访问失败时此对象是错误对象console.log(data); //当访问成功时以数组的形式返回当前目录下的文件结构访问失败时返回undefined});// 3. 载入内置http模块所有联网的程序都要进行网络通信计算机中只有一个物理网卡而且同一个局域网中网卡的地址必须是唯一的网卡通过唯一的IP地址来定位; IP定位到具体的电脑端口号定位到具体的应用程序所有联网的软件都会占用一个端口号。const http require(http);const server http.createServer(); //使用createServer创建一个web服务器server.on(request, function(request, response) { //给server注册请求事件request回调函数中可以传入两个参数第一个为请求对象第二个额为响应对象;它们中有几个比较重要的属性如下response.write(h1Hellow,this is .write()API/h1); //响应给浏览器的内容此方法需要配合response.end()方法才可以实现效果;当然实际推荐只使用end方法也是可以实现相同的效果的前提是将响应内容传入end括号中response.end(h1Hellow,this is .write()API in end/h1); //将响应内容直接传入end中可以省略writer方法response.setHeader(Content-Type, text/plain;charsetutf-8); //浏览器默认编码与相应的编码不一致时会乱码这里.setHeader()设置响应头中Content-Type不同的资源对应的 Content-Type 是不一样的,可以到这里查询http://tool.oschina.net/commonsrequest.socket.remoteAddress; //.socket.remoteAddress获取用户IP地址request.socket.remotePort; //.socket.remotePort获取用户端口号response.statusCode 302;//设置响应状态码,302为临时重定向response.setHeader(Location, /);//页面重定向request.url; //返回浏览器输入url中端口号后面的值可以利用它做路径逻辑响应如var requestUrl request.url;if (requestUrl / || requestUrl /index.html) {response.end(index.html);} else if (requestUrl /login) {response.end(login.html);} else {response.end(h5404 NOT FOUND/h5);};});server.listen(4000, function() { //绑定端口号启动服务,在浏览器使用localhost:4000就可以访问到此服务响应console.log(http服务器启动成功了);});// 4.url模块var url require(url); //载入url模块var result url.parse(127.0.0.1:3000/test.html?namejackage18, true); //以对象的方式解析URL地址后面的参数默认为false当为true时后面的内容将以对象的方式呈现,如下案例console.log(result);/*Url {protocol: 127.0.0.1:,slashes: null,auth: null,host: 3000,port: null,hostname: 3000,hash: null,search: ?namejackage18,query: [Object: null prototype] { name: jack, age: 18 },pathname: /test.html,path: /test.html?namejackage18,href: 127.0.0.1:3000/test.html?namejackage18}*/console.log(result.query); //直接获取后面的参数 { name: joke, message: hellow }实现Apache功能 //简单实现Apache功能// 1.加载http和fs模块var http require(http);var fs require(fs);// 2.创建一个浏览器服务var server http.createServer();// 定义个路径的变量var urldir /www// 3.绑定请求事件server.on(request,function(request,response){// 获取请求的路径var url request.url;// 判断请求的路径并做出响应if (url/) {fs.readFile(urldir /index.html,function(error,data){if (error) {return response.end(404 Not Found);}; response.end(data);});} else if (url/index.html) {fs.readFile(urldir /index.html,function(error,data){if (error) {return response.end(404 Not Found);}; response.end(data);});} else if (url/test.txt) {fs.readFile(urldir /test.txt,function(error,data){if (error) {return response.end(404 Not Found);}; response.end(data);});} else if (url/login.html) {fs.readFile(urldir /login.html,function(error,data){if (error) {return response.end(404 Not Found);}; response.end(data);}); };});// 4.监听端口号server.listen(3000,function(){console.log(running...);});像Apache一样找文件var http require(http);var fs require(fs);var urldir www/;var server http.createServer();server.on(request, function(request, response) {var url request.url;var indurl /index.htmlif (url ! /) {indurl url;};fs.readFile(urldir indurl, function(error, data) {if (error) {return response.end(404 Not Found!);};response.end(data);});});server.listen(3000, function() {console.log(running...);});提示本文图片等素材来源于网络若有侵权请发邮件至邮箱810665436qq.com联系笔者删除。 笔者苦海