Skip to content

12附录

摘取附录中一些有用信息并更新:node如何在浏览器中调试、编码规范、搭建企业NPM仓库

调试Node

js
console.log(1);
setTimeout(function () {
  debugger;
  console.log("world");
}, 1000000);

/**
 * Description placeholder
 * @date 2024/3/14 - 14:58:13
 *
 * @param {*} a
 * @param {*} b
 * @returns {*}
 */
function aaa(a, b) {
  return a + b;
}
  • 打开Chrome浏览器,chrome://inspect
  • 确保你的Node.js应用程序正在运行。(代码中加个setTimeout 5就可以)
  • 在"Remote Target"部分,你应该看到你的Node.js进程

Node编码规范

  • Douglas Crockford
    • JSON、 JSLint、 JSMin和ADSafe之父
    • JavaScript: TheGood Parts
  • 编码规范
    • 空格与格式 eslint

    • 命名规范

    • 作用域 with eval

    • 数组与对象

      • 使用for in的异同(12.3.js)
      js
      var foo = [];
      foo[100] = 100;
      foo["hello"] = "world";
      foo["hello1"] = "world1";
      for (var i in foo) {
        console.log("for in", foo[i]);
        //   100 和 world
      }
      //foo = [0,1,2,...100]
      console.log(foo.length); // 长度是101
      for (var i = 0; i < foo.length; i++) {
        console.log("for", i);
        //   1 - 100
      }
      foo.forEach((val) => {
        console.log("each", val);
        //   100
      });
    • 注解规范

      • dox的注释规范 来源 jsDoc
  • 实践
    • precommit这样的钩子脚本

搭建局域NPM仓库

如何搭建、为什么搭建、如何优化

  • 搭建(过时)
    • CouchDB 基于Erlang语言编写
    • 两部分 www(界面)、registry(存储、api)
    • 安装Erlang和CouchDB、搭建npm服务
    • 同步官方仓库
      • replicate实现 调取CouchDB接口,获取变动细节,同步缺失以及定时任务
  • 意义
    • 解决:私有模块、网络稳定性影响安装速度、隐私问题安全问题
    • 未解决:模块质量和版本控制中存在的风险
  • 优化方法
    • 加入审核机制以及按需同步
    • 1、全量同步变为按需同步:同步指定模块
    • 2、审核机制:
      • 公共模块:同步工程加审核机制,审核模块质量和安全、控制同步模块的权限,审核成功自动按需同步
      • 企业私有模块:模块应该属于团队非个人、设置团队账号、管理员控制用户、团队账号发布、同时增加审核流程
  • 更新
    • 最新搭建方法:
      • npm Enterprise
        • npm Enterprise 废弃 -> github packages npm被github收购
        • 实际是GitHub Packages充当了,私有库的角色,可以发布私有包,设置访问权限,供公司内部使用
        • github packages集成了多种包,包含npm,参考
      • Verdaccio