Node学习笔记 require、export、package

感觉自己一直是个二把刀的前端,很长一段时间内都无法接受自己是个所谓“开发”的名号,不过现在还是释然了。其实很多技术都距离开发二字很远,更多的都是在使用一些别人开发、封装好的代码,区别只在于使用的熟练程度罢了。

感觉随着从上家公司的离职,这两年来自己对代码方面还是略有提高的。从对“数据”这个概念懵懂,到现在已经对“数据”产生了兴趣,所谓数据可以代替一切东西,比如:一个数字、一个效果或者一个页面,通过数据可以将一个繁杂的站点有序的统一在一起。这就是我目前粗浅的理解。

最近开始学习 Node.js ,跟随的教程是 14nodejs(7天) 。以下整理仅作为供工作参考,会随着课程的推进对内容进行修改或补充。如有错误还望指正,谢谢!


Node.js 与 DOM javascript 的区别:

  • 原生javascript没有模块化的概念(导出 exports ,导入 require );

  • 在Node.js中没有 DOM ;

  • 在Node.js变量作用域仅在本文件中生效(文件作用域),每个文件中的变量不会互相污染

    ……

作为行走在服务端的 javascript ,在开发层面和原生代码在书写方式出入不大

运行文件需要在文件目录运行 cmd ,执行 node '文件名' 即可

Node.js 分为3种模块形式:

  • 具名的核心模块;

    通过 require('模块标识符') 方式引入

    var fs = require('fs');
    var http = require('http');
    ……
    
  • 引入的第三方模块;

    利用 npmcnpmyarn 安装,后通过 require 方式引入

    npm i art-template // 安装art-template组件
    
    var art-template = require('art-template')
    
  • 用户开发的文件模块;

    自定义的模块文件使用 module.export.name 导出所需的变量及方法,页面通过 require('./' + '文件路径') 引入页面

    // a.js:
    function add () {};
    var val = 'val'
    // module.export导出的是一个对象
    module.export.add; // 导出add方法
    module.export.val; // 导出val变量
    
    // b.js
    var a = require('./a') // 引入的文件后缀可以省略,‘./’路径不可省略
    add = a.add; // 使用组件a.js中的add方法
    val = a.val; // 使用组件a.js中的val变量
    

require 路径查询规则:

  • 优先从缓存中查询
  • 核心模块
  • 路径形式的文件模块(自定义模块)
  • 第三方模块( require 引入第三方组件时,无需填写文件路径,它会自动依循如下规则进行查询)
    1. 在引入文件目录下 node_modules 找到 ('模块标识符') 中对应的组件目录
    2. 读取其中 package.json 配置文件,找到 main 属性,此属性记录了当前组件的入口模块
    3. package.json 文件中不存在 main 属性或者未指定入口模块文件,Node会 自动执行该目录下index.js 文件
    4. 若以上规则均未成立,则返回上一层目录中查询 node_modules(依次类推)
    5. 当查询至磁盘根目录仍然无法找到目标组件,则抛出提示 can not find moudles xxx

**一个项目中有且只有一个 node_modules **,位置位于项目根目录

module.export 与 export:

module.export.export 都是用于导出的方法,其源码逻辑如下

module = {
    export: {}
}
var export = module.export // 为了方便使用,声明export变量

也就是说 export === module.export

module.export.add; // export.add 导出add方法
module.export.val; // export.val 导出val变量
// 相当于
module = {
    export: {
        add: function () {},
        val: val
    }
}

由此证明 module.exportexport 都可以导出多条方法或变量

但若想单独导出方法或变量时,需要注意

module.export = function () {}
export = function () {} // 切断了之前定义export与module.export之间的联系

以上两种方法会使定义的 var export = module.export 切断联系,导致 export 无法被顺利导出

由此证明 export 无法导出单条方法或变量

package 包描述文件:

建议每个项目都要有一个 package.json 文件,用以说明项目

package.json 文件可以通过 npm init 方式创建,创建向导如下

npm init -y 跳过向导,快速生成

name: // 项目名称
version: // 项目版本
description: // 项目描述
entry point: // 项目入口文件
test command: // 测试命令
git repository: // 远程仓库地址
keywords: // 关键字
author: // 作者
license: // 软件开源许可证
……

当安装第三方组件后,会往 package.json 中自动追加注入

{
    "dependencies": {} // 依赖项
}

文章已同步我的个人博客:《Node学习笔记 require、export、package


本篇文章由一文多发平台ArtiPub自动发布

发布了16 篇原创文章 · 获赞 0 · 访问量 520

猜你喜欢

转载自blog.csdn.net/sz861128/article/details/103562012