Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在node.js中需要构建库的最佳做法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有几个包含帮助函数的实用程序库,我想加载它们,以便它们可以从控制器使用,我想知道
在节点中编码实用程序库的最佳做法是什么?

我有点困惑,因为有几种方法可以做到,我不知道什么是最好的/更合适/更可靠的。这里有2个选项,但我想知道他们是否是最好的(例如,我看到使用module.exports = exports = function(){}等的片段)

//option1.js

"use Strict";

module.exports =  function(){

     exports.test1 =  function(){ console.log('hi I'm test1')};
     exports.test2 =  function(){ console.log('hi I'm test2')};
     return exports;
};

//option2.js

"use Strict";

module.exports =  {

     test1 : function(){ console.log('soy test1')},test2 :  function(){ console.log('soy test2')}

};

//test_controller.js

/* requiring Helpers in different ways */
var option1 = require('./option1.js')();
var option2 = require('./option2.js');

解决方法

@H_673_27@ 我想到我的文件在3个部分:

第1节:CommonJS依赖关系

var lib1 = require("lib1");
var lib2 = require("lib2");

您不需要任何附加的包装器功能。所有节点模块都是automatically wrapped通过node.js在一个功能中,这样做没有任何好处,只是增加了混乱

第2节:纯JavaScript代码

如果需要,这应该几乎专门用于支持变量或顶级模块代码的散布。

var MY_CONST = 42;

function Helper1() {
    //excellent code here
}

function Helper2() {
    //excellent code here
}

保留第2节纯JS。在这个中间的“纯”部分不要使用COR_400_11845@monJS成语。不要使用模块,导出,要求等。这只是我的个人指南,因为JS本身是稳定的,但是封装到模块中仍然有很大的变化,最好保持CommonJS位是无关紧要的,并且可能会改变与有趣的代码分开。 ECMAScript 6模块在几年内最有可能取代CommonJS,所以通过保持第2部分纯的ECMAScript 5,并按照我喜欢称之为“CommonJS Sandwich™”,使自己更容易

第3节:CommonJS出口

exports.Helper1 = Helper1;
exports.Helper2 = Helper2;

>将所有导出结束放在最后还可以快速了解您的公共API是什么,并防止由于粗心复制/粘贴而导致的意外导出属性
>我更喜欢以上exports.foo = foo;而不是将module.exports分配给一个新的对象文字。我发现这避免了一个对象文字的最后一个属性的逗号后缀。
>用你的需求或出口报表做任何事情几乎肯定是不必要的,不必要的光滑或魔术。直到你进步,不要在这里做任何事情。 (即使如此,如果你不是TJ Holowaychuk,你可能只是愚蠢)

我应该出口什么

单一功能(@substack样式)

function degreesToradians(degrees) {}

module.exports = degreesToradians;

保持小而简单。

功能的对象

如果您的模块是一组帮助函数,则应将包含这些函数的对象导出为属性

var foo = require("foo");

function doubleFoo(value) {
  return foo(value) * 2;
}

function tripleFoo(value) {
  return foo(value) * 3;
}

exports.doubleFoo = doubleFoo;
exports.tripleFoo = tripleFoo;

构造函数

如果您的模块是面向对象使用的类设计,则导出构造函数

function GoCart() {
  this.wheels = 4;
}

GoCart.prototype.drive = function drive() {
  //vroom vroom
}

module.exports = GoCart;

出厂/配置关闭功能

一旦您掌握了上述2种模式(真的!),并且感到自信地输出一个可以选择的工厂功能,也可能会做一些其他动态的东西,但是如果有疑问,请坚持使用前两个更简单的选择。

//do-stuff.js
function dostuff(howFast,what) {
   return "I am doing " + what + " at speed " + howFast;
}

function setup(options) {
  //The object returned by this will have closure access to options
  //for its entire lifetime
  return {dostuff: dostuff.bind(null,options.howFast)};
}

module.exports = setup;

所以你可以这样使用

var dostuff = require("./do-stuff")({howFast: "blazing speed"});
console.log(dostuff.dostuff("jogging"));
//"I am doing jogging at speed blazing speed"

大佬总结

以上是大佬教程为你收集整理的在node.js中需要构建库的最佳做法全部内容,希望文章能够帮你解决在node.js中需要构建库的最佳做法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。