感觉自己一直是个二把刀的前端,很长一段时间内都无法接受自己是个所谓“开发”的名号,不过现在还是释然了。其实很多技术都距离开发二字很远,更多的都是在使用一些别人开发、封装好的代码,区别只在于使用的熟练程度罢了。
感觉随着从上家公司的离职,这两年来自己对代码方面还是略有提高的。从对“数据”这个概念懵懂,到现在已经对“数据”产生了兴趣,所谓数据可以代替一切东西,比如:一个数字、一个效果或者一个页面,通过数据可以将一个繁杂的站点有序的统一在一起。这就是我目前粗浅的理解。
最近开始学习 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'); …… -
引入的第三方模块;
利用
npm、cnpm或yarn安装,后通过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引入第三方组件时,无需填写文件路径,它会自动依循如下规则进行查询)- 在引入文件目录下
node_modules找到('模块标识符')中对应的组件目录 - 读取其中
package.json配置文件,找到main属性,此属性记录了当前组件的入口模块 - 若
package.json文件中不存在main属性或者未指定入口模块文件,Node会自动执行该目录下index.js文件 - 若以上规则均未成立,则返回上一层目录中查询
node_modules(依次类推) - 当查询至磁盘根目录仍然无法找到目标组件,则抛出提示
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.export 和 export 都可以导出多条方法或变量
但若想单独导出方法或变量时,需要注意
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自动发布