摘要:平时自己用的模块也不算少了,其实网上有很多牛人开发的模块都很好,希望不要被埋没了。一实用的模块作用获取最新可用的迅雷账号。用法截图查看用户某个时间段内所有模块的下载量,按从高到低排名。
平时自己用的npm模块也不算少了,其实网上有很多牛人开发的npm模块都很好,希望不要被埋没了。
作用:获取最新可用的迅雷 vip 账号。
解决什么:不用每次打开网站去找号。。
用法: $ thunder or
var thunderVip = require("thunder-vip"); thunderVip(function (err, accounts) { console.log(accounts); });
截图
2. npm-user-downloadsnpm-user-downloads
查看 npm 用户某个时间段内所有模块的下载量,按从高到低排名。
解决什么:起初是想看自己的那些模块下载量多,好重点维护。。
用法: $ nud hupengbest last-month --limit=20
截图:
二、koa开发模块 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 转成真实的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转成普通的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环境下需要设置环境变量set DEBUG=*,-not_this 我这里使用的是idea的debug调试
windows 下启动方式
将debug日志转存到文件中
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 }));
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/79690.html
摘要:深入浅出一直想致力于写一篇关于广义讲解系统的文章,苦于时间有限,资源有限。事件驱动机制是通过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文的切换。 深入浅出Node.js 一直想致力于写一篇关于广义讲解Node.js系统的文章,苦于时间有限,资源有限。这篇文章是在结合自己的学习心得以及与行业大佬共同探讨下争对于熟练掌握JS语言后的广义Node.js.至于为什么...
摘要:深入浅出一直想致力于写一篇关于广义讲解系统的文章,苦于时间有限,资源有限。事件驱动机制是通过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文的切换。 深入浅出Node.js 一直想致力于写一篇关于广义讲解Node.js系统的文章,苦于时间有限,资源有限。这篇文章是在结合自己的学习心得以及与行业大佬共同探讨下争对于熟练掌握JS语言后的广义Node.js.至于为什么...
摘要:深入浅出一直想致力于写一篇关于广义讲解系统的文章,苦于时间有限,资源有限。事件驱动机制是通过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文的切换。 深入浅出Node.js 一直想致力于写一篇关于广义讲解Node.js系统的文章,苦于时间有限,资源有限。这篇文章是在结合自己的学习心得以及与行业大佬共同探讨下争对于熟练掌握JS语言后的广义Node.js.至于为什么...
摘要:基础篇整合最近有朋友也想学习相关方面的知识,如果你是后端想接近前端,作为一门跑在服务端的语言从这里入门再好不过了。事件驱动机制是通过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文的切换。 nodeJs 基础篇整合 最近有朋友也想学习nodeJs相关方面的知识,如果你是后端想接近前端,node作为一门跑在服务端的JS语言从这里入门再好不过了。如果你正好喜欢前端,...
阅读 2093·2021-11-22 15:22
阅读 1234·2021-11-11 16:54
阅读 1772·2021-09-23 11:32
阅读 2969·2021-09-22 10:02
阅读 1741·2019-08-30 12:59
阅读 1056·2019-08-29 16:27
阅读 588·2019-08-29 13:21
阅读 2443·2019-08-28 17:57