天生爱走神

其实,我是一个天真活泼、充满创意的年轻人


  • 首页

  • 标签

  • 关于

  • 归档

  • 分类

  • 搜索

使用logrotate进行日志管理

发表于 2019-01-04 | 阅读次数:

广告服务一直有log文件增长过快的问题,之前写了一个crontab都是线上手动清空一下旧日志,

浅谈session管理

发表于 2018-12-14 | 阅读次数:

商业后台和dr后台都用到了session机制,简单总结一下session的管理。

阅读全文 »

最近遇到的两个bug总结

发表于 2018-12-11 | 阅读次数:

qa打包结果和线上不同

vue和vue-template-compiler更新或者不同

NodeJs包与模块机制

发表于 2018-12-04 | 阅读次数:

CommonJS规范

NodeJs 以 JavaScript(ECMAScript) 为基础,但在 ES6 之前,JavaScript自身是不带有模块机制的,所以社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。

2009 ~ 2010 年间,CommonJS 社区大牛云集,稍微了解点历史的同学都清楚,在同时间出现了 NodeJs,一下子让 javaScript 摇身一变,有了新的用武之地,同时在 NodeJs 推动下的 CommonJS 模块系统也是逐渐深入人心。

使用 CommonJs 规范必须遵守的三个主要约定:

  1. require

    一个函数,参数

  2. 模块上下文

    require函数

    exports对象

    module对象

exports 和 module.exports 的区别

https://cnodejs.org/topic/5231a630101e574521e45ef8

  1. 模块标志

    通俗来说就是模块名,官方定义:Module_Identifiers。

不必要遵循的约定(实现与否都可以):

  1. 存储方案:一个模块的内容可以存在数据库里,也可以存在文件系统里,还有动态/静态链接库,甚至于函数里(对于 NodeJs 来说就是文件系统,所有模块都放在 node_modules 目录下,当然还有一些 C++ 的模块存在动态链接库中);

  2. 加载器:可以支持环境变量(path)寻径(也可以不实现)

总之,NodeJs 应用通过入口文件之后,里面其实是由一个一个模块组成,通常一个模块就是一个遵循 CommonJs 规范书写的 JavaScript 源文件,当然也可能是后缀为 .node 的 C++ 的模块,二进制文件。这些文件通过 require 函数引入后,就可以在程序里使用了,使用 CommonJs 规范作为 NodeJs 的模块导入导出机制,就相当于把每个JavaScript文件或者说模块当做一个不会污染全局的闭包(只要不使用 global)。

  • CommonJs 模块规范

  • CommonJs 包规范

    包描述文件:package.json,但和 NodeJs 的有些不同。

    ​ 必填、选填、保留字段

    包的格式:一个包含整个包目录(尤其是包含 package.json 文件)的zip格式的归档,首先要有一个 package.json 在根目录,二进制文件存在于名为 bin 的子目录下,JavaScript源码在lib目录下,文档在 doc 文目录下,单元测试文件在 test 目录下,这是一个遵循 CommonJs 规范的包(即使没有遵循规范,只要 package.json 是合法的也是可以用的)

    而 NodeJs 的包以目录的形式存在于node_modules,在安装之前(未解压前)通常是一个 tar.gz 格式的包。

  • Node.js 模块规范

  • Node.js 包规范

    Npm 全称 Node Package Manager,刚开始是node的包管理器,后来发展成整个JavaScript的包管理器

    Npm2.x 嵌套式依赖,可以非常优雅的实现某个依赖在项目中多版本共存的情况。对于后端开发及工具类开发的 NodeJs 应用来说,嵌套式依赖其实更适合。

    Npm3.x、4.x扁平化依赖方案,适合前端,需要考虑代码体积。

  • Node.js 四种模块本质和加载原理
  • Node.js 入口模块

模块寻径

参考链接

深入了解 Node.js 包与模块机制

正确使用Babel(1)后端

发表于 2018-11-15 | 阅读次数:

前面说了那么多,现在让我们来实践一下怎样是正确的babel使用方式,当然也不一定绝对正确,肯定还有些不足的地方,如果你看到了欢迎补充。

“babel 7”的图片搜索ç"“æžœ

阅读全文 »
1234…10
Leo.Tian

Leo.Tian

程序员、电影爱好者

47 日志
4 分类
72 标签
GitHub 知乎
Creative Commons
© 2016 — 2020 Leo.Tian
由 Hexo 强力驱动
|
主题 — NexT.Mist

Hosted by 京ICP备17008411号-1