国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

常用npm模塊分享

sorra / 3183人閱讀

摘要:平時自己用的模塊也不算少了,其實網(wǎng)上有很多牛人開發(fā)的模塊都很好,希望不要被埋沒了。一實用的模塊作用獲取最新可用的迅雷賬號。用法截圖查看用戶某個時間段內(nèi)所有模塊的下載量,按從高到低排名。

平時自己用的npm模塊也不算少了,其實網(wǎng)上有很多牛人開發(fā)的npm模塊都很好,希望不要被埋沒了。

一、 實用的模塊 1.thunder-vip

作用:獲取最新可用的迅雷 vip 賬號。
解決什么:不用每次打開網(wǎng)站去找號。。
用法: $ thunder or

  var thunderVip = require("thunder-vip");

  thunderVip(function (err, accounts) {
  console.log(accounts);
  });

截圖

2. npm-user-downloads

npm-user-downloads

查看 npm 用戶某個時間段內(nèi)所有模塊的下載量,按從高到低排名。

解決什么:起初是想看自己的那些模塊下載量多,好重點維護。。

用法: $ nud hupengbest last-month --limit=20

截圖:

二、koa開發(fā)模塊 1. co

作用:異步控制

1 栗子

    co(function* () {
      var result = yield Promise.resolve(true);
      return result;
    }).then(function (value) {
      console.log(value);
    }, function (err) {
      console.error(err.stack);
    });

2 如果你想把一個 co-generator-function 轉(zhuǎn)成真實的functionu并返回一個promise 可以使用co.wrap(fn*)

    var fn = co.wrap(function* (val) {
      return yield Promise.resolve(val);
    });

    fn(true).then(function (val) {

    });

3 完整的example

    var co = require("co");

    co(function *(){
      // yield any promise
      var result = yield Promise.resolve(true);
    }).catch(onerror);

    co(function *(){
      // resolve multiple promises in parallel
      var a = Promise.resolve(1);
      var b = Promise.resolve(2);
      var c = Promise.resolve(3);
      var res = yield [a, b, c];
      console.log(res);
      // => [1, 2, 3]
    }).catch(onerror);

    // errors can be try/catched
    co(function *(){
      try {
        yield Promise.reject(new Error("boom"));
      } catch (err) {
        console.error(err.message); // "boom"
     }
    }).catch(onerror);

    function onerror(err) {
      // log any uncaught errors
      // co will not throw any errors you do not handle!!!
      // HANDLE ALL YOUR ERRORS!!!
      console.error(err.stack);
    }

4 api

co(fn*).then( val => )
解決一個generator然后返回一個promise

    co(function* () {
      return yield Promise.resolve(true);
    }).then(function (val) {
      console.log(val);
    }, function (err) {
      console.error(err.stack);
    });

var fn = co.wrap(fn*)
將一個generator轉(zhuǎn)成普通的function并返回一個promise

    var fn = co.wrap(function* (val) {
      return yield Promise.resolve(val);
    });

    fn(true).then(function (val) {

    });
2、debug

npm install debug

使用方法

  //Example app.js
    var debug = require("debug")("http")
      , http = require("http")
      , name = "My App";

    // fake app

    debug("booting %s", name);

    http.createServer(function(req, res){
      debug(req.method + " " + req.url);
      res.end("hello
");
    }).listen(3000, function(){
      debug("listening");
    });

    // fake worker of some kind

    require("./worker");
 //Example worker.js:
    var debug = require("debug")("worker");

    setInterval(function(){
      debug("doing some work");
    }, 1000);

效果圖

在windows環(huán)境下需要設(shè)置環(huán)境變量set DEBUG=*,-not_this 我這里使用的是idea的debug調(diào)試

windows 下啟動方式

將debug日志轉(zhuǎn)存到文件中
DEBUG_FD=3 node your-app.js 3> whatever.log

3、koa-bodyparser

使用方法

  var koa = require("koa");
  var bodyParser = require("koa-bodyparser");

  var app = koa();
  app.use(bodyParser());

  app.use(function *() {
    this.body = this.request.body;
  });

在koa2中使用

npm install koa-bodyparser@next --save

4. koa-json

npm install koa-json --save

使用方法

var json = require("koa-json");
var Koa = require("koa");
var app = new Koa();

app.use(json());

app.use((ctx) => {
  ctx.body = { foo: "bar" };
});
4. koa-webpack-dev-middleware

使用方法

npm install --save-dev koa-webpack-dev-middleware

var app = require("koa")();
var webpackMiddleware = require("koa-webpack-dev-middleware");
app.use(webpackMiddleware(webpack({
  // webpack options
  // webpackMiddleware takes a Compiler object as first parameter
  // which is returned by webpack(...) without callback.
  entry: "...",
  output: {
      path: "/"
      // no real path is required, just pass "/"
      // but it will work with other paths too.
  }
}), {
  // all options optional

  noInfo: false,
  // display no info to console (only warnings and errors)

  quiet: false,
  // display nothing to the console

  lazy: true,
  // switch into lazy mode
  // that means no watching, but recompilation on every request

  watchDelay: 300,
  // delay after change (only lazy: false)

  publicPath: "/assets/",
  // public path to bind the middleware to
  // use the same as in webpack

  headers: { "X-Custom-Header": "yes" },
  // custom headers

  stats: {
      colors: true
  }
  // options for formating the statistics
}));

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/79690.html

相關(guān)文章

  • 深入淺出Node.js

    摘要:深入淺出一直想致力于寫一篇關(guān)于廣義講解系統(tǒng)的文章,苦于時間有限,資源有限。事件驅(qū)動機制是通過內(nèi)部單線程高效率地維護事件循環(huán)隊列來實現(xiàn)的,沒有多線程的資源占用和上下文的切換。 深入淺出Node.js 一直想致力于寫一篇關(guān)于廣義講解Node.js系統(tǒng)的文章,苦于時間有限,資源有限。這篇文章是在結(jié)合自己的學(xué)習(xí)心得以及與行業(yè)大佬共同探討下爭對于熟練掌握J(rèn)S語言后的廣義Node.js.至于為什么...

    oujie 評論0 收藏0
  • 深入淺出Node.js

    摘要:深入淺出一直想致力于寫一篇關(guān)于廣義講解系統(tǒng)的文章,苦于時間有限,資源有限。事件驅(qū)動機制是通過內(nèi)部單線程高效率地維護事件循環(huán)隊列來實現(xiàn)的,沒有多線程的資源占用和上下文的切換。 深入淺出Node.js 一直想致力于寫一篇關(guān)于廣義講解Node.js系統(tǒng)的文章,苦于時間有限,資源有限。這篇文章是在結(jié)合自己的學(xué)習(xí)心得以及與行業(yè)大佬共同探討下爭對于熟練掌握J(rèn)S語言后的廣義Node.js.至于為什么...

    MadPecker 評論0 收藏0
  • 深入淺出Node.js

    摘要:深入淺出一直想致力于寫一篇關(guān)于廣義講解系統(tǒng)的文章,苦于時間有限,資源有限。事件驅(qū)動機制是通過內(nèi)部單線程高效率地維護事件循環(huán)隊列來實現(xiàn)的,沒有多線程的資源占用和上下文的切換。 深入淺出Node.js 一直想致力于寫一篇關(guān)于廣義講解Node.js系統(tǒng)的文章,苦于時間有限,資源有限。這篇文章是在結(jié)合自己的學(xué)習(xí)心得以及與行業(yè)大佬共同探討下爭對于熟練掌握J(rèn)S語言后的廣義Node.js.至于為什么...

    lily_wang 評論0 收藏0
  • nodejs 基礎(chǔ)篇整合

    摘要:基礎(chǔ)篇整合最近有朋友也想學(xué)習(xí)相關(guān)方面的知識,如果你是后端想接近前端,作為一門跑在服務(wù)端的語言從這里入門再好不過了。事件驅(qū)動機制是通過內(nèi)部單線程高效率地維護事件循環(huán)隊列來實現(xiàn)的,沒有多線程的資源占用和上下文的切換。 nodeJs 基礎(chǔ)篇整合 最近有朋友也想學(xué)習(xí)nodeJs相關(guān)方面的知識,如果你是后端想接近前端,node作為一門跑在服務(wù)端的JS語言從這里入門再好不過了。如果你正好喜歡前端,...

    lemanli 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<