博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js系列笔记-3(不定期更新)
阅读量:5834 次
发布时间:2019-06-18

本文共 2290 字,大约阅读时间需要 7 分钟。

  • Node.js模块系统
    • 概况
      • 模块系统用来让Node.js文件可以相互调用
      • 模块时Node.js应用程序的基本组成部分,文件和模块一一对应
      • 这个文件可以是JavaScript代码,JSON或者编译过的C/C++扩展
    • 创建模块
      • main.js
      • 1 var hello = require('./hello');2 hello.world();
      • hello.js
      • 1 exports.world = function() {2     console.log('Hello World!');3 }
      • Node.js提供了exports和require两个对象,其中exports是模块公开的接口,require用于从外部获取一个模块的接口,即所获取模块的exports对象
    • 服务端的模块存储位置
      • Node.js的require方法具有固定的查找策略
      • 从文件模块缓存中加载,优先级最高
      • 从原生模块加载,优先级仅次于文件模块缓存,而原声模块也具有一个缓存区
      • 从文件加载,当文件模块缓存中不存在,且不是原生模块,Node.js会解析require方法传入的参数,从文件系统中加载实际的文件
      • 接收以下几种参数的传递
        • http/fs/path 原生模块
        • ./mode  ../mod 相对路径的文件模块
        • /pathtomodule/mode 绝对路径的文件模块
        • mod 非原生模块的文件模块
  • Node.js函数
    • 概况
      • 函数可以作为参数,可以预先定义函数,作为参数传递,也可直接在传递参数的地方定义参数,这样函数可以匿名
      • 函数同样可以作为变量,比如可以这样
      • 1 function exe(someF, value) {2     someF(value);3 }

         someF作为一个函数参数

      • 注意匿名函数的使用方式,这个已经很熟悉了
  • Node.js路由
    • 使用典型的MVC架构,浏览器发送请求,由路由控制接受,根据不同的路径定向到不同的服务器,而控制器处理用户具体的请求,比如访问数据库中的对象,即模型部分,生成视图的HTML,最后再由控制器返回给浏览器,完成一次请求
    • 模块基本思路
      • 我们需要为路由请求的URL和其他需要的GET及POST参数,随后路由需要根据这些数据来执行相应的代码
      • 因此我们需要查看HTTP请求,从中提取出请求的URL以及GET/POST参数,这一功能究竟属于服务器还是路由值得探讨,但暂定为HTTP服务器的功能
      • 我们需要的数据都包含在request对象中,该对象作为onRequest()回调函数的第一个参数传递。而为了解析这些数据,需要额外的模块,url和querystring
    • 模块代码
      • server.js
      • 1 var http = require("http"); 2 var url = require("url"); 3  4 function start(route){ 5     function onRequest(request, response){ 6         var pathname = url.parse(request.url).pathname; 7         console.log("Request for " + pathname + " received."); 8          9         route(pathname);10         11         response.writeHead(200, {"Content-Type": "text/plain"});12         response.write("Hello World!");13         response.end();14     }15     16     http.createServer(onRequest).listen(8888);17     console.log("Server has started.");18 }19 20 exports.start = start;
      • router.js
      • 1 function route(pathname){2     console.log("About to route a request for" + pathname);3 }4 5 exports.route = route;
      • index.js
      • 1 var server = require("./server");2 var router = require("./router");3 server.start(router.route);
    • 显示
    • F:\nodejs\Project>node index.jsServer has started.Request for / received.About to route a request for/Request for /favicon.ico received.About to route a request for/favicon.ico

       

    • favicon.ico
      • 指的是网站图标文件,即显示在网站地址最前面的一张图片,可以在网站根目录放置图片,且命名为FAVICON.ICO
      • favorites icon 显示在收藏夹或者地址栏
      • 浏览器调用原理是首先在网页所在目录寻找favicon.ico文件,没有找到就到网站的根目录去找

转载于:https://www.cnblogs.com/emcc/p/5780582.html

你可能感兴趣的文章
【SAP HANA】关于SAP HANA中带层次结构的计算视图Cacultation View创建、激活状况下在系统中生成对象的研究...
查看>>
DevOps 前世今生 | mPaaS 线上直播 CodeHub #1 回顾
查看>>
iOS 解决UITabelView刷新闪动
查看>>
CentOS 7 装vim遇到的问题和解决方法
查看>>
JavaScript基础教程1-20160612
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
使用《Deep Image Prior》来做图像复原
查看>>
Linux基础命令---rmdir
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
FreeMarker-Built-ins for strings
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
我理想中的前端工作流
查看>>
Chrome 广告屏蔽功能不影响浏览器性能
查看>>
Android状态栏实现沉浸式模式
查看>>