nodejs基础上

运行环境

1. V8引擎负责解析和执行JavaScript 代码

2. 内置API是由运行环境提供的特殊接口,只能在所属的运行环境中被调用

3. nodeJs 是基于Chrome V8 引擎的javaScript运行环境

4. 浏览器是JavaScript 的前端运行环境 ,nodeJS是JavaScript  的后端开发环境,nodeJs中无法调用 DOM和BOM等浏览器内置API

nodeJs可以做什么

1. 基于Express 框架(http://www.expressjs.com.cn/),可以快速构建 Web 应用

2. 基于 Electron 框架 (https://electronjs.org/),可以构建跨平台的桌面应用

3. 基于restify 框架(http://restify.com/),可以快速构建API 

4. 接口项目读写和操作数据库、创建实用的命令行工具辅助前端开发、etc...

什么是客户端、什么是服务器?

 1. 负责消费资源的电脑,叫做客户端;

 2. 负责对外提供网络资源的电脑,叫做服务器;

域名和域名服务器

IP地址和域名是一对应的关系,这份对应关系存放在一种叫做域名服务器(DNS)的电脑中、使用者只需通过好记的域名访问对应的服务器即可,对应的转换工作由域名服务器实现。因此,域名服务器就是提供 IP 地址和域名之间的转换服务的服务器

HTTP模块

req 请求对象:只要服务器接收到了客户端的请求,就会调用通过 server.on() 为服务器绑定的 request 事件处理函数

res 响应对象:在服务器的 request 事件处理函数中,调用 res.send() 响应客户端

模块化

什么是模块化: 把一个大文件拆成独立并互相依赖的多个小模块

模块化规范:

1. 每个模块内部,module 变量代表当前模块

2. module 变量是一个对象,它的 exports 属性(即 module.exports) 是对外的接口加载某个模块,其实是加载该模块的 module.exports 属性。require0 方法用于加载模块

模块化的好处:

1. 提高了代码的复用性

2. 提高了代码的可维护性

3. 可以实现按需加载

模块类型: 内置模块(由官网提供),自定义模块(自己创建的模块),第三方模块(第三方开发模块)

模块作用域好处:防止全局变量污染

module对象:每个js自定义模块中都有一个 module 对象,它里面存储了和当前模块有关的信息

require() 模块时,得到的永远是 module.exports 指向的对象

npm切换数据源

npm切换数据源

nrm 切换数据源

nrm 切换数据源

项目包

开发依赖包: (记录到 devDependencies 节点中的包,只在开发期间会用到) npm i -D

核心依赖包: (记录到 dependencies 节点中的包,在开发期间和项目上线之后都会用到) npm i

全局包: npm i -g   

 卸载: npm uninstall 包名 -g

包规范:

1. 包必须以单独的目录而存在

2. 包的顶级目录下要必须包含 package,json 这个包管理配置文件

3. package.json 中必须包含 name,version,main 这三个属性,分别代表包的名字、版本号、包的入口。

发布NPM包

1. 新建 tools 文件夹,作为包的根目录

2. 在 tools 文件夹中,新建 package.json (包管理配置文件) , index.js (包的入口文件) ,README.md(包的说明文档)

3. 开发包功能

4. 创建npm官网账号 

5. 在终端登录账号 先切换到npm的官方, 然后执行登录命令 : npm login

6. 通过  npm pubilsh   (包名不能重名)

6. 删除包 npm publish 包名 --force  (可以删除74小时之内的包, 24小时内不能重复提交)

模块的加载机制

自定义模块加载机制:

1. 模块在第一次加载后会被缓存。 这也意味着多次调用 require()不会导致模块的代码被执行多次注意:不论是内置模块、用户自定义模块、还是第三方模块,它们都会优先从缓存中加载,从而提高模块的加载效率

2. 在使用 require0 导入自定义模块时,如果省略了文件的扩展名,则 Nodejs 会顺序分别尝试加载以下的文件:

1. 按照确切的文件名进行加载

2. 补全 .js 扩展名进行加载

3. 补全 json 扩展名进行加载

4. 补全.node 扩展名进行加载

5. 都加载不到会报错

第三方模块的加载机制:

如果传递给 require() 的模块标识符不是一个内置模块,也没有以/或/开头则 Nde.js 会从当前模块的父目录开始,尝试从 node-modules 文件夹中加载第三方模块。如果没有找到对应的第三方模块,则移动到再上一层父目录中,进行加载,直到文件系统的根目录。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容

  • Nodejs是javascript的运行程序,使用Nodejs最大的优点是可以让javascript运行在服务器端...
    孔浩阅读 5,696评论 3 41
  • 1.安装 去官网下载注意:npm版本过低,更新node 就自动更新了 --save会放在package的包里 2...
    胡自鲜阅读 308评论 0 0
  • NODEJS的由来 Node.js 诞生于2009年,Node.js采用C++语言编写而成,是 一个Javascr...
    likeli阅读 244评论 0 0
  • Node.js 可以理解为能在操作系统上跑的js(不仅仅在浏览器) 还能当web服务器哟~ 用的Chrome V8...
    那就远走阅读 347评论 0 0
  • NodeJs 用于服务器端开发,是执行js的ECMAScript标准,不包含DOM和BOM,但是部分API可以使用...
    Is_JackieZhang阅读 2,085评论 1 3