摘要:平時自己用的模塊也不算少了,其實網(wǎng)上有很多牛人開發(fā)的模塊都很好,希望不要被埋沒了。一實用的模塊作用獲取最新可用的迅雷賬號。用法截圖查看用戶某個時間段內(nèi)所有模塊的下載量,按從高到低排名。
平時自己用的npm模塊也不算少了,其實網(wǎng)上有很多牛人開發(fā)的npm模塊都很好,希望不要被埋沒了。
作用:獲取最新可用的迅雷 vip 賬號。
解決什么:不用每次打開網(wǎng)站去找號。。
用法: $ thunder or
var thunderVip = require("thunder-vip"); thunderVip(function (err, accounts) { console.log(accounts); });
截圖
2. npm-user-downloadsnpm-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
使用方法
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-jsonnpm 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)于廣義講解系統(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.至于為什么...
摘要:深入淺出一直想致力于寫一篇關(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.至于為什么...
摘要:深入淺出一直想致力于寫一篇關(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.至于為什么...
摘要:基礎(chǔ)篇整合最近有朋友也想學(xué)習(xí)相關(guān)方面的知識,如果你是后端想接近前端,作為一門跑在服務(wù)端的語言從這里入門再好不過了。事件驅(qū)動機制是通過內(nèi)部單線程高效率地維護事件循環(huán)隊列來實現(xiàn)的,沒有多線程的資源占用和上下文的切換。 nodeJs 基礎(chǔ)篇整合 最近有朋友也想學(xué)習(xí)nodeJs相關(guān)方面的知識,如果你是后端想接近前端,node作為一門跑在服務(wù)端的JS語言從這里入門再好不過了。如果你正好喜歡前端,...
閱讀 2137·2021-11-22 15:22
閱讀 1286·2021-11-11 16:54
閱讀 1807·2021-09-23 11:32
閱讀 3007·2021-09-22 10:02
閱讀 1771·2019-08-30 12:59
閱讀 1085·2019-08-29 16:27
閱讀 622·2019-08-29 13:21
閱讀 2464·2019-08-28 17:57