自学node.js day3

1.模块系统

使用node编写应用程序主要就是使用

  • EcmaScript语言

  • 核心模块

    • 文件操作的fs
    • HTTP服务的http
    • url路径操作模块
    • path路径处理模块
    • os操作系统信息
    • 模块名
  • 第三方模块

    • art-template
    • 必须经过下载才可以使用
    • 模块名
  • 自己写的模块

    • 自己创建的文件
    • 文件路径

什么是模块化

  • 文件作用域
  • 通信规则
    • 加载 require
    • 导出
1.1commonJS模块规范

node中的js有模块系统:

  • 模块作用域
  • 使用require来加载模块
  • 使用exports接口对象来到出模块中的成员
    • 可以多次为这个对象添加成员实现对外导出多个内部成员
    • 可以认为在每个模块最后return了这个对象

如果一个模块需要直接导出某个成员,而非挂载的方式(挂载到exports对象中),必须使用module.exports=…

加载require

语法:

var 自定义变量名称 = require('模块'

两个作用:

  • 执行被加载模块中的代码
  • 得到被加载模块中exports导出接口对象
导出exports

导出多个成员:必须在对象中

导出单个成员:拿到的是函数或者字符串

module.exports='hello'
//后者会覆盖前者
module.exports=function(x,y){
    return x+y
}

也可以这样导出多个成员

module.exports={
    add:function(){
        return x+y
    }
    str:'hello'
}
模块原理解析

在node中,每个模块内部都有一个自己的module对象

该module对象中有个成员交exports 也是一个对象 默认为空对象 默认在代码最后一句 return module.exports

模块中还有隐藏代码 var exports=module.exports

给exports赋值会断开对module.exports之间的引用

对module.exports重新赋值也会断开引用

require规则加载方法
  • 优先从缓存加载
    • 由于在a中已经加载过b了,所以mian中的b不会重复加载 也不会重复执行里面的代码 只会拿到接口对象
    • 避免重复加载 提高模块加载效率
  • 核心模块
  • 路径形式模块‘
  • 第三方模块

require()中的参数被称为模块标识符

《深入浅出node.js》

npm

  • node package manager
npm网站

npmjs.com

npm命令行工具

只要安装了node就安装了npm

npm也有版本这个概念、

升级npm

npm install --global npm

npm常用命令

npm uninstall

解决npm被墙问题

npm存储包文件的服务器在国外,有时候会被墙,速度很慢

http://npm.taobao.org/淘宝的开发团队把npm在国内做了备份

安装淘宝的cnpm

npm install --global cnpm//标识安装到全局 任意目录下都可以执行

之后在安装包的时候将以前的npm全部替换为cnpm

或者

直接执行以下命令将下载地址添加到配置文件中

npm config set registry https://registry.npm.taobao.org

查看npm配置信息

npm config list

package.json

  • 包描述(说明)文件
  • 建议每个项目都有 就像产品说明书一样
  • 建议执行npm install的时候加上–Save这个选项 目的是用来保存依赖项信息
  • 可以通过npm init自动初始化出来npm init -y跳过向导 快速生成
  • 里面的dependencies包含了第三方包依赖信息
  • 如果误删了node_modules,只需要npm install就会自动把package.json中的dependencies中所有依赖项都下载回来

express

第三方web开发框架

基于原生node高度封装了http模块

更加专注业务 而非底层细节

提高效率 使代码高度统一

npm install expross --save

步骤

1.引包

2.创建服务器应用程序

var app = express()//原来的CreateServer

极简helloword

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w8oV7DY2-1626133869007)(C:\Users\甜味少女静\Pictures\QQ截图20210711172508.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MVjXg1sp-1626133869009)(C:\Users\甜味少女静\Pictures\QQ截图20210711173407.png)]

响应:res.send('hello word')

var app = express()//原来的CreateServer

极简helloword

[外链图片转存中…(img-w8oV7DY2-1626133869007)]

[外链图片转存中…(img-MVjXg1sp-1626133869009)]

响应:res.send('hello word')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值