Node文件模块

 在上一篇文章中有提到,Node模块分为核心模块和文件模块,接下来就简单总结一下文件模块。

文件模块则是在运行时动态加载,需要完整的路径分析、文件定位、编译执行过程、速度相比核心模块稍微慢一些,但是用的非常多。这些模块需要我们自己定义或者引用第三方的模块,所以文件模块有可以分为自定义模块和第三方模块。

CommonJs

 JavaScript 是一个强大面向对象语言,它有很多快速高效的解释器。然而, JavaScript标准定义的 API 是为了构建基于浏览器的应用程序。并没有制定一个用于更广泛的应用程序的标准库。CommonJS 规范的提出,主要是为了弥补当前 JavaScript 没有标准的缺陷。它的终极目标就是:提供一个类似 Python,Ruby 和 Java 语言的标准库,而不只是停留在小脚本程序的阶段。用 CommonJS API 编写出的应用,不仅可以利用 JavaScript 开发客户端应用,而且还可以编写以下应用:

  • 服务器端 JavaScript 应用程序。(nodejs)
  • 命令行工具。
  • 桌面图形界面应用程序。

CommonJS 就是模块化的标准,nodejs 就是 CommonJS(模块化)的实现

CommonJS(Nodejs)中关于自定义模块有如下规定:

  1. 我们可以把公共的功能抽离成为一个单独的 js 文件作为一个模块,默认情况下面这个模块里面的方法或者属性,外面是没法访问的。如果要让外部可以访问模块里面的方法或者属性,就必须在模块里面通过 exports 或者 module.exports 暴露属性或者方法。
  2. 在需要使用这些模块的文件中,通过 require 的方式引入这个模块。这个时候就可以使用模块里面暴露的属性和方法。

Node 应用由模块组成,采用 CommonJS 模块规范。

自定义模块

我们可以把公共的功能抽离成为一个单独的 js 文件作为一个模块,默认情况下面这个模块里面的方法或者属性,外面是没法访问的。如果要让外部可以访问模块里面的方法或者属性,就必须在模块里面通过 exports 或者 module.exports 暴露属性或者方法。

在需要使用这些模块的文件中,通过 require 的方式引入这个模块。这个时候就可以使用模块里面暴露的属性和方法(在引入js文件的时候,文件后缀可以省略)

module.exports和exports的区别

exports

   

module.exports

     

node_modules

 在上面的例子中,我们是将自定义模块直接放在根目录下面的,但是如果在默认的目录下面没有找到指定的模块时,nodejs会主动到node_modules里面找这个模块。

所以,首先在根目录下面新建一个文件夹node_modules,在这个文件夹中添加一个自定义模块

  

  

node_modules不仅支持寻找自定义模块,也支持寻找文件夹

在node_modules下新建文件夹test,将刚刚的test.js移入到改文件夹中。

 

然后只需要修改一下com03.js就可以了

执行com03.js的时候,会请求require里面的文件,在默认的里面,没有找到test路径下面的test.js,就会重新到node_modules里面去寻找test文件夹,找到文件夹以后再该文件夹里面找test.js

第三方模块

 Nodejs中第三方模块由包组成,可以通过包来对一组具有相互依赖关系的模块进行统一管理。

npm

在nodejs中通过NPM命令在下载第三方的模块(包),npm是世界上最大的开放源代码的生态系统,我们可以在https://www.npmjs.com中找到各种各样的包,并通过npm安装到我们的项目中,下面以jQuery为例,展示npm的基本用法:

npm版本查看:npm -v

模块安装:npm install jquery

模块卸载:npm uninstall jauery

查看已安装模块:npm list

查看版本:npm info jquery

指定版本安装:npm install jquery@1.8.0

package.json

package.json 定义了一个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)

创建package.json

可以使用命令npm init 或者npm init --yes(所有配置项全部默认,不在一项一项的询问)在项目中生成package.json

当我们在安装模块的时候,将模块写入package.json里面的话,后期拷贝项目就不需要拷贝node_modules这个文件夹了,再次使用这个项目的时候,只需要执行npm install,就会根据package.json这个文件里面的模块依赖自动下载之前安装过的模块了。

--save-dev 和--save

 --save-dev和--save都能在安装模块的时候将模块写入package.json中,但是两者又有区别:

执行上面的命令,使用两种方式分别安装了两个模块,然后打开package.json:

现在可以看到,通过--save安装的模块,加入到dependencie中了;而通过--save-dev安装的模块,则加入到devDependencie中了。这两个的区别在于:dependencie 配置当前程序所依赖的其他包。devDependencie 配置当前程序所依赖的其他包,只会下载模块,而不下载这些模块的测试和文档框架。

版本更新

 使用 npm install node_module –save 自动更新 dependencies 字段值;使用 npm install node_module –save-dev 自动更新 devDependencies 字段值;

在上面的截图中,每个版本号都是用^开头的,这个是可修改的:^表示第一位版本号不变,后面两位取最新的;~表示前两位不变,最后一个取最新;*表示全部取最新。

转载于:https://www.cnblogs.com/yuyujuan/p/10596529.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP GD库解析一张简单图片并输出

这里只演示一下2种颜色值的图片&#xff0c;简单描述下概念。 首先要安装下GD库。否则下面的代码运行不了。 $size getimagesize(2.png); // 获取图片大小 $res imagecreatefrompng(2.png); // 获取指定图片的资源对象for ($i 0; $i < $size[1]; $i) {for ($j 0; $j &…

Permutations CodeForces - 736D (矩阵逆)

对于删除每个对(x,y), 可以发现他对答案的贡献为代数余子式$A_{xy}$ 复习了一下线代后发现代数余子式可以通过伴随矩阵求出, 即$A_{xy}A^*[y][x]$, 伴随矩阵$A^*|A|A^{-1}$可以通过高斯消元$O(\frac{n^3}{\omega})$求出 #include <iostream> #include <algorithm> …

开发Teams的messaging extension

什么是Messaging Extension Messaging Extension是微软Teams的一种十分有用的扩展方式。可以让用户发送adaptive cards。具体的说明不在这里展开了。可以阅读微软官方的详细说明&#xff1a; https://docs.microsoft.com/en-gb/microsoftteams/platform/concepts/messaging-e…

归并排序(转)

转载自&#xff1a;https://www.cnblogs.com/chengxiao/p/6194356.html 归并排序&#xff08;MERGE-SORT&#xff09;是利用归并的思想实现的排序方法&#xff0c;该算法采用经典的分治&#xff08;divide-and-conquer&#xff09;策略&#xff08;分治法将问题分(divide)成一些…

Site24x7 为Teams提供可智能 DevOps

我们生活在一个云的时代, SaaS 应用程序每天都在推动我们的生产力。作为一个消费者, 很难想象如果你最喜欢的应用无法访问&#xff0c;即使只是一秒钟无法访问。作为 SaaS业务, 更难以想象您的服务面临停机, 每一分钟停止服务都会花费大量的资金, 当然还损失客户的信任。Site24…

XUbuntu22.04之跨平台容器格式工具:MKVToolNix(二百零三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

redis集群搭建踩坑笔记

推荐参考教程&#xff1a;https://blog.csdn.net/pucao_cug/article/details/69250101 错误&#xff1a; from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require from /usr/local/redis-3.0.6/src/redis-trib.rb:25:in <main> 解决&#xff1a; g…

Docker 创建镜像

文章首发自个人网站&#xff1a;https://www.exception.site/docker/docker-create-image 本文中&#xff0c;您将学习 Docker 如何创建镜像&#xff1f;Docker 创建镜像主要有三种&#xff1a; 基于已有的镜像创建&#xff1b;基于 Dockerfile 来创建&#xff1b;基于本地模板…

hdfoo站点开发笔记

为了安全,也要兼顾编辑器切换管理 开发时不必管目录名称的事, 只是在部署的时候,才修改应用目录和tp目录的名字就行了. 为了提高tp的加载效率, 始终给app和tp以绝对路径.就是以 realpath来定位 realpath返回的就是 一个绝对路径, 在lx中是以 斜杠 根树开始的. 参数可以是文件名…

论文致谢

这篇致谢语&#xff0c;是我论文的最后一节&#xff0c;也是我放在最后的最后写的内容。之所以拖到最后&#xff0c;是因为我不知道该用怎么的方式来结束我的论文。我想&#xff0c;要结束的不只是文章&#xff0c;还是研究生生涯&#xff0c;是我在厦门大学三年来的一切&#…

使用Azure Pipelines来实现Teams App的CI

我在之前的文章里介绍了如何一步步配置CI/CD来部署Teams App( 之前的文章 )&#xff0c;随着Azure DevOps的发展&#xff0c;微软推出了Azure Pipelines。在这篇文章中&#xff0c;主要介绍什么是Azure Pipelines&#xff0c;以及如何使用Azure Pipelines来进行Teams App的构建…

004-React入门概述

一、概述 参考地址&#xff1a;https://reactjs.org/docs/try-react.html 1.1、本地快速体验 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>Hello World</title><script src"https://unpkg.com/react16/…

Python --- 卸载

python的卸载 1、➜ rpm -qa|grep python3.6|xargs rpm -ev --allmatches --nodeps ##强制删除已安装程序及其关联 2、➜ whereis python3.6 |xargs rm -frv 允许你对输出执行其他某些命令 3、➜ whereis python ##验证删除&#xff0c;返回无结果转载于:https://www.…

开发Teams Tabs应用程序

什么是Teams Tabs Tabs是微软Teams的一种十分有用的扩展方式。可以非常方便的和现有的网站或者网页应用进行整合。具体的说明不在这里展开了。可以阅读微软官方的详细说明&#xff1a; https://docs.microsoft.com/en-gb/microsoftteams/platform/concepts/tabs/tabs-overvie…

(转)关于SimpleDateFormat安全的时间格式化线程安全问题

想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类&#xff0c;该类用来对日期字符串进行解析和格式化输出&#xff0c;但如果使用不小心会导致非常微妙和难以调试的问题&#xff0c;因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的&…

IDEA开发工具的学习

1.设置jdk的版本 &#xff0c;快捷键&#xff1a;ctrl shirt alt s 打开项目的设置&#xff0c;选择Project 进行 jdk版本的设置。 2.鼠标移到项目上&#xff0c;右键&#xff0c;Show in Explorer 定位到当前项目对应的文件夹中 3.每次关闭项目时&#xff0c;需要手动选择Fi…

顺利达成微软HacktoberFest 2018

昨天收到邮件&#xff0c;我的HacktoberFest 2018奖品终于从美国寄出来了&#xff0c;不知道飘洋过海多久可以寄到。 今年的HacktoberFest 2018除了微软官方博客的宣传&#xff0c;连Channel 9的美女主播也在TWC上大肆宣传。 活动内容是在整个10月份需要给微软的开源代码贡献5…

【转载】Swift属性Property

本文系转载 原文链接 Swift的属性与Objective-C中的属性是一样的&#xff0c;不同的是Swift细化了属性的类型&#xff0c;另外除了类之外&#xff0c;结构体和枚举也可以有属性。 Swift中有这么几种属性&#xff1a; 存储属性(Stored properties)&#xff1a;存储实例的常量和变…

leetcode13

题目&#xff1a; 阿拉伯数字转化为罗马数字 解题思路&#xff1a; 设置两个vector&#xff0c;一个放罗马数字&#xff0c;一个放罗马数字所对应的阿拉伯数字&#xff1b; 从给定数字num的最高位开始&#xff0c;逐位转化&#xff1b;n-2; 如果该位数字是1-3&#xff0c;则在结…

更新!在线状态和用户的共存模式保持一致

根据用户反馈&#xff0c;我们正在改进&#xff1a;当组织同时使用Microsoft Teams和Skype for Business时的用户在线状态。通过此更新&#xff0c;路由和在线状态将完全保持一致。为确保路由能跟随用户的在线状态&#xff0c;所以在线状态的更新现在会基于用户的共存模式。 如…