特性
- 因为功能逻辑并不复杂,所以可以渲染极限的性能。
- 使用
JavaScript
原生语法,在复杂的业务需求都可以实现。 - 原始语法兼容
EJS
模板语法。
这是一个中二半吊子码农分享学习经验和生活的网站...
特性
JavaScript
原生语法,在复杂的业务需求都可以实现。EJS
模板语法。request
简化的HTTP客户端。cheerio
快速,灵活和实施精益专为服务器设计的jQuery核心。使用正则表达式解析function
字符串
/\s*(?:(async)\s+)?function\s+(?:([_$a-zA-Z][_$a-zA-Z0-9]*)\s*?)?\(((?:\s*(?:[_$a-zA-Z][_$a-zA-Z0-9]*)\s*)(?:,\s*(?:[_$a-zA-Z][_$a-zA-Z0-9]*)\s*)*?)\)\s*?\{\s*([\s\S]*)\s*\}\s*/
在线调试:点这里
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。 下面是常见的HTTP状态码:
核心方法:
var Queue = (function () {
function Queue (worker, concurrency) {
this.tasks = [];
this.worker = typeof worker === 'function' ? worker : null;
this.concurrencyMax = typeof concurrency === 'number' && concurrency > 0 ? concurrency : 1;
this.concurrencyCut = 0;
this.drain = null;
}
Queue.prototype._start = function () {
if (this.tasks.length === 0 || this.concurrencyCut >= this.concurrencyMax) {
return ;
}
var taskData = this.tasks.shift();
this.concurrencyCut += 1;
this.worker && this.worker(taskData.task, this._next.bind({ taskData: taskData, self: this }));
};
Queue.prototype._next = function () {
var self = this.self;
var taskData = this.taskData;
taskData.callback && taskData.callback.apply(this, arguments);
self.concurrencyCut -= 1;
if ( self.tasks.length > 0 ) { return self._start(); }
if ( self.concurrencyCut === 0 ) { return self.drain && self.drain(); }
};
Queue.prototype.push = function (task, callback) {
this.tasks.push({ task: task, callback: callback });
if ( this.concurrencyCut < this.concurrencyMax ) { return this._start(); }
};
return Queue;
})();
nvm是个啥?nvm是一个可以让你在同一台机器上安装和切换不同版本node的工具,用它可以方便的在机器上安装并维护多个Node的版本