感觉自己一直是个二把刀的前端,很长一段时间内都无法接受自己是个所谓“开发”的名号,不过现在还是释然了。其实很多技术都距离开发二字很远,更多的都是在使用一些别人开发、封装好的代码,区别只在于使用的熟练程度罢了。
感觉随着从上家公司的离职,这两年来自己对代码方面还是略有提高的。从对“数据”这个概念懵懂,到现在已经对“数据”产生了兴趣,所谓数据可以代替一切东西,比如:一个数字、一个效果或者一个页面,通过数据可以将一个繁杂的站点有序的统一在一起。这就是我目前粗浅的理解。
最近开始学习 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自动发布