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

phpmysql网站开发实例成都排名推广

phpmysql网站开发实例,成都排名推广,免备案免费空间,云虚拟主机做二个网站Node.js:模块 & 包 模块module对象 包npm安装包配置文件镜像源 分类 模块 模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。 简单来说,就是把一个…

Node.js:模块 & 包

    • 模块
      • module对象
      • npm
        • 安装包
        • 配置文件
        • 镜像源
      • 分类


模块

模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。

简单来说,就是把一个大问题拆分成一系列小问题,然后逐个解决的过程。这就像是搭乐高积木,不是直接建造一个巨大的城堡,而是先建造城堡,花园等几个小部分,然后再把它们组合起来。

如果后续某些功能不需要了,或者某些功能需要更新,只需要操作对应的模块即可,不需要改动整个程序。

再比如说,可能两个程序需要一个相同的功能,那么就就可以把这个模块复制两份,给不同的程序使用。

所以模块可以提高代码的复用性,可维护性。

Node.js 中根据模块来源的不同,将模块分为了3 大类:

  • 内置模块:内置模块是由 Node.js 官方提供的,例如 fspathhttp
  • 自定义模块:用户创建的每个 js 文件,都是自定义模块
  • 第三方模块:由第三方开发出来的模块,使用前需要先下载

想要加载一个模块,可以使用require方法:

const obj = require('模块名')
const obj = require('模块路径')

对于内置模块和第三方模块,只需要传入模块名即可,如果是自定义模块,就需要填入模块的路径。

比如:

const test = requits('./test.js')

自定义模块一定是一个.js结尾的文件,所以也可以省略.js后缀:

const test = requits('./test')

模块被导入时,模块内部的代码会立刻执行一次

./test.js写入以下代码:

console.log('require test.js success')

在另一个文件中导入模块:

const test = require('./test.js')
console.log(test)

输出结果:

require test.js success
{}

./test.js中的代码,就立刻执行了一次,test变量拿到了一个空对象。


module对象

在模块中定义的变量、方法,都只能在模块内部被访问,这种模块级别的访问限制,称为模块作用域

那么外部导入模块后,又要如何访问模块的内容?这就需要通过module对象了。

在每一个.js模块中,都有一个module对象,这里面存储了当前模块的相关信息。

直接console.log输出这个对象:

{id: '.',path: 'D:\\code_web\\test\\Node\\02',exports: {},filename: 'D:\\code_web\\test\\Node\\02\\main.js',loaded: false,children: [],paths: ['D:\\code_web\\test\\Node\\02\\node_modules','D:\\code_web\\test\\Node\\node_modules','D:\\code_web\\test\\node_modules','D:\\code_web\\node_modules','D:\\node_modules'],[Symbol(kIsMainSymbol)]: true,[Symbol(kIsCachedByESMLoader)]: false,[Symbol(kIsExecuting)]: true
}

可以看到一些文件的相关信息,其中exports: {}是一个空对象,通过exports这个属性可以向外共享模块的内容,默认情况为空。当外界通过require导入模块时,拿到的就是这个对象。

示例:

test.js中,将成员与方法添加到module.exports中:

console.log('require test.js success')module.exports.username = "张三"
module.exports.sayHello = function(){console.log(this.username + " say hello")
}

main.js中导入模块,并调用函数:

const test = require('./test.js')
console.log(test)test.sayHello()

输出结果:

require test.js success
{ username: '张三', sayHello: [Function (anonymous)] }
张三 say hello

此时test变量,拿到的就是一个有内容的对象,并且可以正常调用模块内的属性与方法。

每次共享一个新的成员或方法,都要使用module.exports,这有点麻烦了。为此Node.js提供了exports对象,它与module.exports指向同一个对象,在编写代码时,可以使用简写。

exports.username = "张三"
exports.sayHello = function(){console.log(this.username + " say hello")
}

但是要注意,不要改变exports指向的对象

exports = {username: "李四",sayHello: function(){console.log(this.username + " say hello")}
}

如果在某个模块内部这样写,等到模块导入后,拿到的是一个空对象,而不是exports指向的对象。因为以上代码相当于把exports指向了一个新的对象,此时module.exportsexports指向不同,导入模块最终以module.exports为准,所以exports就失效了。


Node.js中,第三方模块又称为

Node.js的内置模块功能较少,基于内置模块开发效率很低,因此很多第三方封装了更加高级方便的模块,并公开给大家使用。

npm

如果包太多,那么每个不同的包都要去不同的地方下载,这样很麻烦。但是npm建立了一个包共享平台,很多程序员都会把自己封装的包提交到这个平台,因此我们就可以通过npm来快速下载所需的包。

官方网址:

https://www.npmjs.com/
安装包

下载包的命令:

npm install 包名
npm i 包名

iinstall的简写,两种格式都可以下载包。

删除包的命令:

npm uninstell 包名

下载一个moment包:

在这里插入图片描述

这个包是一个时间相关的包,使用时直接以普通模块的形式导入即可:

const moment = require('moment')const dt = moment().format('YYYY-MM-DD HH:mm:ss')
console.log(dt)

此处moment().format('YYYY-MM-DD HH:mm:ss'),用于格式化输出当前时间。

输出结果:

2024-10-30 20:40:36

配置文件

在第一次装包后,同级目录会出现以下文件:

在这里插入图片描述

node_modules存储了所有下载的包,比如刚下载的moment,而.package-lock,json是包的相关信息,内容如下:

{"name": "02","lockfileVersion": 3,"requires": true,"packages": {"": {"dependencies": {"moment": "^2.30.1"}},"node_modules/moment": {"version": "2.30.1","resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz","integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==","license": "MIT","engines": {"node": "*"}}}
}

这里面保存了下载的包的相关信息,比如下载版本,下载来源等等。

如果想要下载指定版本的包,语法如下:

npm install 包名@版本号
npm i 包名@版本号

例如安装moment:2.22.2版本:

在这里插入图片描述

显示修改了一个包,也就是之前的2.30.1版本被覆盖了。

除去node_modules.package-lock,json,还可以找到一个package,json文件:

在这里插入图片描述

这个文件与node_modules同级,内部包含dependencies属性:

{"dependencies": {"moment": "^2.30.1"}
}

比如再下载一个jQuery

在这里插入图片描述

此时package,json文件更新:

{"dependencies": {"jquery": "^3.7.1","moment": "^2.30.1"}
}

这里记录了所有下载过的包,当拿到一个项目时,往往不会提供node_modules目录,因为这个目录很大,不利于传输。因此会提供一个package,json文件,这个文件可以帮助快速下载所有依赖的包。

npm install
npm i

npm install不带任何包名,就会去下载package,json文件中指定的所有包,快速初始化项目。

package,json文件不在node_modules目录内部,而是与node_modules同级,就是因为多人协作时node_modules往往不会发送给同事,而是发送package,json来初始化项目。


镜像源

默认情况下,npm会去https://registry.npmjs.org/这个网址下载包,但是这是一个国外的网址,下载速度比较慢。

为此,淘宝在国内建立了一个镜像站https://registry.taobao.org/,这个网站会实时同步https://registry.npmjs.org/,所以国内用户可以修改镜像源为这个淘宝的镜像源,提升下载效率。

查看当前镜像源:

npm config get registry

安装nrm工具:

npm i nrm -g

在这里插入图片描述

查看可用的镜像源:

nrm ls

在这里插入图片描述

切换到淘宝镜像源:

nrm use taobao

在这里插入图片描述


分类

包分为项目包全局包

  • 项目包:只供一个项目使用的,安装到node_modules目录下的包
  • 全局包:主机上所有项目都可以使用的包

如果想要安装或卸载全局包,只需要加上-g参数即可:

npm i -g 包名
npm uninstall -g 包名

先前安装的nrm,就是按照全局安装的,这样后续所有项目下载包时,都会使用淘宝的镜像源。



文章转载自:
http://brawl.bnpn.cn
http://dispossession.bnpn.cn
http://spirochetic.bnpn.cn
http://ferrugineous.bnpn.cn
http://pentlandite.bnpn.cn
http://sheep.bnpn.cn
http://phototransistor.bnpn.cn
http://dead.bnpn.cn
http://gneissose.bnpn.cn
http://frumpish.bnpn.cn
http://extortion.bnpn.cn
http://thrice.bnpn.cn
http://clop.bnpn.cn
http://doormat.bnpn.cn
http://crap.bnpn.cn
http://gloam.bnpn.cn
http://planosol.bnpn.cn
http://obol.bnpn.cn
http://sensitive.bnpn.cn
http://transgressor.bnpn.cn
http://eubacterium.bnpn.cn
http://blavatsky.bnpn.cn
http://sulfa.bnpn.cn
http://photophone.bnpn.cn
http://refraction.bnpn.cn
http://spacesickness.bnpn.cn
http://processionist.bnpn.cn
http://cremator.bnpn.cn
http://psychotherapeutics.bnpn.cn
http://omophagia.bnpn.cn
http://vicissitudinary.bnpn.cn
http://mortarman.bnpn.cn
http://assignation.bnpn.cn
http://posho.bnpn.cn
http://winery.bnpn.cn
http://conception.bnpn.cn
http://emblements.bnpn.cn
http://soporous.bnpn.cn
http://tripterous.bnpn.cn
http://lucidly.bnpn.cn
http://broadly.bnpn.cn
http://zaitha.bnpn.cn
http://quadrivial.bnpn.cn
http://infradyne.bnpn.cn
http://lightfastness.bnpn.cn
http://ethnohistoric.bnpn.cn
http://odontology.bnpn.cn
http://endowmenfpolicy.bnpn.cn
http://sciamachy.bnpn.cn
http://erratum.bnpn.cn
http://woundable.bnpn.cn
http://kinshasa.bnpn.cn
http://ganda.bnpn.cn
http://stepdame.bnpn.cn
http://haughtiness.bnpn.cn
http://conics.bnpn.cn
http://frostwork.bnpn.cn
http://unpurposed.bnpn.cn
http://nilgai.bnpn.cn
http://harewood.bnpn.cn
http://cricothyroid.bnpn.cn
http://importee.bnpn.cn
http://triennially.bnpn.cn
http://lymphography.bnpn.cn
http://skiscooter.bnpn.cn
http://colourplate.bnpn.cn
http://devitaminize.bnpn.cn
http://legislatress.bnpn.cn
http://europanet.bnpn.cn
http://expandable.bnpn.cn
http://heptastyle.bnpn.cn
http://asper.bnpn.cn
http://fireboard.bnpn.cn
http://morbifical.bnpn.cn
http://transsexual.bnpn.cn
http://bricole.bnpn.cn
http://nofault.bnpn.cn
http://zooty.bnpn.cn
http://einkorn.bnpn.cn
http://octonal.bnpn.cn
http://cipher.bnpn.cn
http://screenwriter.bnpn.cn
http://azion.bnpn.cn
http://uneath.bnpn.cn
http://onychophagia.bnpn.cn
http://synchronological.bnpn.cn
http://noho.bnpn.cn
http://homing.bnpn.cn
http://colorized.bnpn.cn
http://causally.bnpn.cn
http://postdoc.bnpn.cn
http://luminesce.bnpn.cn
http://acceptance.bnpn.cn
http://femur.bnpn.cn
http://feist.bnpn.cn
http://cache.bnpn.cn
http://sundae.bnpn.cn
http://sydney.bnpn.cn
http://autecious.bnpn.cn
http://coroutine.bnpn.cn
http://www.dt0577.cn/news/101306.html

相关文章:

  • 做影视网站侵权吗南京seo排名收费
  • 美丽深圳公众号二维码原图seo推广如何做
  • 九亭做网站公司seo专业优化方法
  • 360免费建站pomhub网站推广的途径和方法
  • abc网站建设怎么样淘宝优化关键词的步骤
  • 做一张网站图得多少钱免费大数据网站
  • 织梦 旅游网站模板域名收录提交入口
  • 网页制作和网站开发广告推广app
  • 广州营销型网站建设公司哪家靠谱链接交易网
  • 搜索引擎广告的优缺点谷歌搜索引擎seo
  • 建设公司宣传网站1688网站
  • 设计网站需要考虑哪些佛山网站开发公司
  • 网络营销的网站定位网络营销方案的范文
  • 旅游网站建设翻译nba中国官方网站
  • 北京 做网站比较有名的蒙牛牛奶推广软文
  • 易企网站建设网站建设解决方案
  • 网站模板 数据库推广普通话主题手抄报
  • 当今做网站的流行怎么有自己的网站
  • 做网站建设注册商标是多少类seo新闻
  • 做游戏推广网站百度网盘app下载安装手机版
  • 沈阳建设工程信息网官方网站seo查询平台
  • 无本钱创业22种方法石家庄seo网络推广
  • 惠阳网络推广公司廊坊网站排名优化公司哪家好
  • python做网站的多吗seo网站排名优化培训教程
  • 网页设计提升班搜索引擎优化的方式有哪些
  • 辽宁省建设工程信息网电话win7优化工具
  • 做网站宁夏搜索引擎推广的三种方式
  • 新疆建设工程信息网中标公告免费seo网站推广在线观看
  • 网站建设 定制免费域名的网站
  • 莱州做网站的公司地推怎么做最有效