开始先说一下为什么学习node,是因为在工作项目中以及学习过程中发现node其实已经占据了非常重要的作用,前端工程化的基础基本上就是通过node.js实现的,我们常用的webpack和vue-cli都有node的身影,所以学习node就成了我们前端工程师的必修课,如果掌握node,我们也可以干一些自己喜欢的事情,所以感觉非常的有意义。因为之前学习过一些node的基础,所以这篇文章先做一些简单的回顾。首先我们需要知道node是什么,能干什么样的事。
node.js是一个javaScript运行环境(runtime)
node.js是一个快速构建网络服务及应用的平台,运行在服务器端,主要用于操作服务器文件,数据库,http协议等系统底层的东西。是一个让javascript运行在服务端的开发平台。(实际上是对V8引擎进行了封装)为了更好的让javaScript运行在浏览器之外的平台,
其实现了很多模块:文件系统,包,操作系统api,网络通信等,javaScript中没有或者不完善的功能。
它和javaScript有是什么关系? 它们都是采用ECMAscript语法,js主要运用在前端开发,node主要运用在后端开发。
关于它的下载和安装我们就不说了,因为在配置工作环境的时候已经都安装过了。
多余的不说,我们直接进入正题
node 模块系统
又要说这个老生常谈的话题了,我们简单提一下,因为大家都知道我们为什么要模块化,因为随着程序和业务的复杂度越来越高,一个文件里面的代码也来越多,越来越不容易维护。所以我们在编写代码的时候,把很多函数分组,放到不同的文件中,每个文件包含的代码就
相对较少,现在很多语言都这样搞,在开发中能很大程度的解决问题。有什么优点呢,简单的列一下
1.减少文件体积
2.命名冲突问题
3.文件依赖问题
4.提高代码可复用性
模块的分类
主要分为两大类
1.原生模块
//因为是内置模块所以不需要路径
var fs = require('fs')
2.文件模块
//调用文件模块必须指定路径,否则会报错
var fs = require('../test.js')
文件模块又分为三种类型,以后缀进行区分,node.js会根据后缀名来决定加载方式,MMP,论坛太low,写不了表格,我给大家列一下。
类型 描述
.js 通过fs模块编译并执行
.node 通过C/C++进行编写的addon。通过dlopen方法进行加载。(C/C++对于我来说太。。。,咱也不知道,知道它是这样执行的就可以了)。
.json 读取文件,条用json.parse解析加载
exports 创建模块
exports是当前模块的导出对象,用于导出模块公有方法和属性
我们先创建一个test.js文件
在里面写一个函数
// test.js
exports.sum = function (a,b) {
reutrn a+b
}
然后在创建一个main.js文件
在里面引入test.js
// main.js
var m = require(./test.js)
var a = m.sum(10,20)
console.log(a) // 30
module 对象
通过module对象可以访问到当前模块的一些相关信息,但最多的用途是替换当前模块导出对象。例如模块默认导出对象默认是一个普通对象,如果想改为一个函数可以通过如下方式:
导出一个构造函数
//hello.js
function hello(){
this.name ="你的名字";
this.setName = function(name){
this.name = name;
}
this.sayName = function(){
alert(this.name);
}
}
module.exports= hello;
//main.js
var hello = require('./hello.js');
var o = new hello();
o.setName('张三');
o.sayName(); // 张三
还有就是模块初始化以及加载的优先级,这块我还没深入了解,就先不说了,我学习研究后在总结一下吧。npm 换源
这是飞哥最近给我们分享过的一个知识点,通过它将我们项目用到的东西放在了私有库里面,在一定程度上保证了安全性。
首先我们了解一下nrm,它是一个管理npm的工具,我们用npm的时候通常会把源切到国内的镜像,这样安装或者更新包的时候会快一点。nrm就是用来切换官方的npm源和国内的npm源,当然也可以切换公司的私有源(也就是我们说的私有库),
例如我们的前端私有库(https://192.168.211.**)。
如何使用呢?
第一步先全局安装nrm
npm i nrm -g
可以通过nrm ls 查看有多少源
npm -------- https://registry.npmjs.org/
yarn ------- https://registry.yarnpkg.com/
cnpm ------- http://r.cnpmjs.org/
taobao ----- https://registry.npm.taobao.org/
nj --------- https://registry.nodejitsu.com/
npmMirror -- https://skimdb.npmjs.com/registry/
edunpm ----- http://registry.enpmjs.org/
* verdaccio -- http://192.168.211.68:4873/
*号代表的是目前我们所在的源
nrm use 是切换到那个源上
nrm use npm
nrm add 添加源
nrm add verdaccio http://192.168.211.68:4873/
nrm del 删除源
nrm del http://192.168.211.68:4873/
今天就先写到这,因为敲得我手疼(哈哈哈),关于node的学习还得继续进行,等我再研究一段时间再来更新,下篇估计主要介绍一下node.js的核心模块以及用法。