android开发实战 Hadoop 进程 Eclipse插件 作用域 深度图像 智慧树 redux terminal formvalidator.js 后台模板下载 小程序demo源码 linux管道符 bootstrap颜色 新手学c还是java json转object js数组截取前5个 python相对路径怎么写 python数据格式 python中open python中index的用法 python图形化编程 python开发界面 python的文件操作 java平台 java删除文件 java语言是什么 java异常 acmecadconverter 端口关闭工具 lseek函数 saminside 选择模拟位置信息应用 pr黑场过渡 infopath下载 迅雷去广告版 unity3d下载 js小数点保留2位 VSPD 奥法隐藏外观
当前位置: 首页 > 学习教程  > 编程语言

node学习之——模块与包管理器

2020/12/28 19:12:29 文章标签:

模块与包管理器 js天生的缺陷-缺少模块化的管理工具 表现:容易出现变量被覆盖,方法被污染的情况 var num 123 var num 456 // 变量被覆盖了 function demo(){console.log(这是demo1的方法) } function demo(){console.log(这是demo2的方法) } conso…

模块与包管理器

js天生的缺陷-缺少模块化的管理工具

表现:容易出现变量被覆盖,方法被污染的情况

var num = 123
var num = 456 // 变量被覆盖了
function demo(){
	console.log('这是demo1的方法')
}
function demo(){
	console.log('这是demo2的方法')
}
console.log(num) // 456
demo() // 这是demo2的方法
  • 解决方案1:命名空间
let moduleA = {
	num:123,
	demo:function demo(){
		console.log('这是demo1的方法')
	}
}
let moduleB = {
	num:456,
	demo:function demo(){
		console.log('这是demo2的方法')
	}
}
console.log(moduleA.num) //123
console.log(moduleB.num) //456
moduleA.demo() //这是demo1的方法
moduleB.demo() //这是demo2的方法

如jQuery中有许多变量和方法,但是无法直接访问,必须通过jQuery,$调用各个方法

  • 解决方案2:闭包
<script>
(function(){
	var num = 123
	function demo (){
		console.log('这是demo1方法')
	}
	console.log(num) //123
	demo() //这是demo1方法
})()
</script>
<script>
(function(){
	var num = 456
	function demo (){
		console.log('这是demo2方法')
	}
	console.log(num) //456
	demo() //这是demo2方法
})()
</script>

CommonJS标准

解释:不同于jQuery的命名空间,CommonJS是一套规范,约定了js如何组织,如何编写,包括包、二进制、套接字、单元测试等等。大部分标准在拟定和讨论之中,首先把执行不同任务的代码块和代码文件看为独立的模块,每一个模块都是一个单独的作用域,但不是孤立的,可能存在依赖关系。每个模块氛围三个部分,定义标识引用
在这里插入图片描述
在这里插入图片描述

NodeJs的模块管理机制

基于commonjs实现了模块管理系统。node中每一个js文件都是一个独立的模块,在其内部不需要有命名空间,不需要担心变量的污染和方法定义时的隔离。同时模块之间可以组合成更强大的模块或功能包。
在Node.js中,模块分成了三类

  • 核心模块
  • 文件模块
  • 第三方模块

在node.js中文件与模块是一一对应的,引用模块有两种方式

  • 通过文件路径引用
  • 通过模块名称引用

模块的流程

创建模块和导出模块

新建 utils.js文件

// 暴露接口
let utils ={
	sayHello:function(){
		return 'hello'
	},
	add:function(x,y){
	return x+y
	}
}
//通过 module.exports 导出
// module.exports = utils
// 通过exports单独导出
exports.sayHello = utils.sayHello
exports.add = utils.add
exports.str= '今天天气不错'

导入和使用模块

新建common.js文件

const http = require('http')
// let utils = require('./utils')
let sayHello = require('./utils').sayHello
let str = require('./utils').str
let server = http.createServer(function(req,res){
	res.statusCode=200
	res.setHeader('Content-Type','text/html;charset=utf-8')
	res.write(sayHello())
	res.write('<br/>')
	res.end(str)
})
server.listen(3000,'127.0.0.1',()=>{
	console.log('服务正在启动中')
})

本文链接: http://www.dtmao.cc/news_show_550184.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?