当前位置: 首页 > news >正文

百度推广怎么做的网站诸城做网站公司

百度推广怎么做的网站,诸城做网站公司,文学网站做编辑,杭州有做网站[node]模块系统 Node.js中的模块系统模块的使用模块的导入模块的导出导出多个值导出默认值导出可传参的函数 文件查找策略从文件模块缓存中加载从原生模块加载从文件加载 Node.js中的模块系统 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。 …

[node]模块系统

  • Node.js中的模块系统
  • 模块的使用
    • 模块的导入
    • 模块的导出
      • 导出多个值
      • 导出默认值
      • 导出可传参的函数
  • 文件查找策略
    • 从文件模块缓存中加载
    • 从原生模块加载
    • 从文件加载

Node.js中的模块系统

为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。

模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。

模块的使用

Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。

常用的关键字包括:

  • exports
  • module
  • require

exports是module.exports的别名,一般要对外暴露属性或方法,就用 exports 就行,要暴露对象(类似class,包含了很多属性和方法),就用 module.exports

不建议同时使用 exports 和 module.exports

如果先使用 exports 对外暴露属性或方法,再使用 module.exports 暴露对象,会使得 exports 上暴露的属性或者方法失效。

原因在于,exports 仅仅是 module.exports 的一个引用

模块的导入

Nodejs主要是通过require的方式导入;

模块的导出

导出多个值

module.js

//方式1
exports.a="this is a module param,";
exports.b="use exports to export param,";
exports.c="check the result";

module-use.js,使用模块:

const receive=require("./module");
console.log(receive.a,receive.b,receive.c);

终端打印:

输入:node module-use.js
输出:this is a module param, use exports to export param, check the result

导出默认值

module.js

//方式2
module.exports=["this use module.exports to export param","this is array"];

module-use.js

const receive=require("./module");
console.log(receive);

终端打印:

输入:node module-use.js
输出:[ 'this use module.exports to export param', 'this is array' ]

导出可传参的函数

module.js

//方式3
module.exports=title=>`this use module.exports to export param ,and you can pass param ${title} to this template"`;

module-use.js

const receive=require("./module");
//方式3
console.log(receive("TTTTTT"))

终端打印:

输入:node module-use.js
输出:this use module.exports to export param ,and you can pass param TTTTTT to this template

文件查找策略

Node.js 的 require 方法的文件查找策略:
Node.js 中存在 4 类模块(原生模块和3种文件模块),尽管 require 方法极其简单,但是内部的加载却是十分复杂的,其加载优先级也各自不同

在这里插入图片描述

模块加载的优先级:

文件模块缓存>原生模块缓存>原生模块>文件模块

优先从缓存区加载。如果缓存区没有被加载过,则调用模块的加载方式进行加载和执行

从文件模块缓存中加载

尽管原生模块与文件模块的优先级不同,但是都会优先从文件模块的缓存中加载已经存在的模块。

从原生模块加载

原生模块的优先级仅次于文件模块缓存的优先级。require 方法解析文件名之后,优先检查模块是否在原生模块列表中。以http模块为例,尽管在目录下存在一个 http/http.js/http.node/http.json 文件,require(“http”) 都不会从这些文件中加载,而是从原生模块中加载。

原生模块也有一个缓存区,同样也是优先从缓存区加载。如果缓存区没有被加载过,则调用原生模块的加载方式进行加载和执行。

从文件加载

当文件模块缓存中不存在,而且不是原生模块的时候,Node.js 会根据 require 方法传入的参数,并从文件系统中加载实际的文件,这里将详细描述查找文件模块的过程。

require方法接受以下几种参数的传递:

  • http、fs、path等,原生模块
  • ./mod或…/mod,相对路径的文件模块
  • /pathtomodule/mod,绝对路径的文件模块
  • mod,非原生模块的文件模块

在路径 Y 下执行 require(X) 语句执行顺序:

1. 如果 X 是内置模块a. 返回内置模块b. 停止执行
2. 如果 X'/' 开头a. 设置 Y 为文件根路径
3. 如果 X'./''/' or '../' 开头a. LOAD_AS_FILE(Y + X)b. LOAD_AS_DIRECTORY(Y + X)
4. LOAD_NODE_MODULES(X, dirname(Y))
5. 抛出异常 "not found"LOAD_AS_FILE(X)
1. 如果 X 是一个文件,X 作为 JavaScript 文本载入并停止执行。
2. 如果 X.js 是一个文件,X.js 作为 JavaScript 文本载入并停止执行。
3. 如果 X.json 是一个文件, 解析 X.json 为 JavaScript 对象并停止执行。
4. 如果 X.node 是一个文件,X.node 作为二进制插件载入并停止执行。LOAD_INDEX(X)
1. 如果 X/index.js 是一个文件,X/index.js 作为 JavaScript 文本载入并停止执行。
2. 如果 X/index.json 是一个文件, 解析 X/index.json 为 JavaScript 对象并停止执行。
3. 如果 X/index.node 是一个文件,X/index.node 作为二进制插件载入并停止执行。LOAD_AS_DIRECTORY(X)
1. 如果 X/package.json 是一个文件,a. 解析 X/package.json, 并查找 "main" 字段。b. let M = X + (json main 字段)c. LOAD_AS_FILE(M)d. LOAD_INDEX(M)
2. LOAD_INDEX(X)LOAD_NODE_MODULES(X, START)
1. let DIRS=NODE_MODULES_PATHS(START)
2. for each DIR in DIRS:a. LOAD_AS_FILE(DIR/X)b. LOAD_AS_DIRECTORY(DIR/X)NODE_MODULES_PATHS(START)
1. let PARTS = path split(START)
2. let I = count of PARTS - 1
3. let DIRS = []
4. while I >= 0,a. if PARTS[I] = "node_modules" CONTINUEb. DIR = path join(PARTS[0 .. I] + "node_modules")c. DIRS = DIRS + DIRd. let I = I - 1
5. return DIRS
http://www.yayakq.cn/news/43322/

相关文章:

  • wordpress上传媒体文件大小修改网站从哪些方面做优化
  • 网站建设与管理基础及实训(php版)公司手机版网站模板免费下载
  • 什么行业适合做网站推广合肥晨曦网站建设
  • 自己做营销型网站网站开发需求网
  • 临沂建站平台网站网站设计的公司
  • 网站中竖导航栏怎么做在线制作国庆头像
  • 网站怎么做参考文献如何免费推广一个网站
  • 做新网站推广的活动网页微信版登陆看不到聊天记录吗
  • 网站的目标定位有哪些网站 版式
  • 网站顶部动画代码国外网站建设平台
  • 江门有那几间公司做网站的怎么用php做网站方案
  • 网站建设 地址 昌乐网站设计与建设难吗
  • 网站关键词筛选怎么样在网上建设网站挣钱
  • 国内精品网站建设上海发布公众号官网
  • 怎么把统计代码加到网站别人品牌的域名做网站吗
  • 开发一个网站的费用南昌网站建设模板技术公司
  • 福建嘉瑞建设工程有限公司网站安卓手机app下载
  • 网站 横幅做seo要明白网站内容乃重中之重
  • 网站建设开发费怎么做账滨州北京网站建设价格低
  • 深圳网站建设及推广服务公司郑州大旗网站制作公司
  • wordpress生成站点地图兰州市建设工程质量监督站网站
  • 物理机安装虚拟机做网站中山做网站的公司
  • 淄博网站建设优惠臻动传媒免费ppt生成器
  • 什么网站收录排名最高百姓畅言六安杂谈
  • 做网站怎么租用服务器吗江西九江怎么样
  • 北京市网站制作设计wordpress手机 不适应
  • 怎么找到网站的空间服务商大庆油田建设集团网站
  • 机顶盒做网站东莞网站建设网站
  • 珠海网站制作系统模型下载网站开发流程
  • 网站地图深度做多少合适怎么修改wordpress主题字体大小