首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

读书笔记-《了不起的nodejs》-2

大家好,今天刚学会用微信的图文模板,啊哈哈,以后文章就要这样排版喽!哈哈,解锁新功能,有点小开心,我还真是一个容易满足的人呢!各位宝宝,也要做一个容易满足的人哦!

万古人间四月天,最近天气很好,你看照片里的云~

node.js安装

自定义模块

要创建自定义模块,在原来的node项目中删除node_moduls目录,并把package.json文件修改为:

代码语言:javascript
复制
{
  "name": "tll-test-modules",
  "version": "0.0.0",
  "dependencies": {
    "colors": "0.5.0"
  }
}

package.json文件是从node和npm两个层面描述项目的,其中name和version,是必要的字段。通常还会定义一些依赖,将依赖模块的块名和版本号作为对象的属性名和值在这个文件中定义。此文件内容必须遵循JSON格式,必须确保所有的字符串都要用双引号。

保存上述文件,安装依赖,然后运行index.js文件

代码语言:javascript
复制
npm install
node test

本例中自定义模块是内部使用的,如果想发布出去,npm提供方法:

代码语言:javascript
复制
npm publish

若你不想发布,可在package.json值设置:

代码语言:javascript
复制
"private": "true"

当别人require('tll-test-modules'),为了能让node知道该载入哪个文件,我们需要用的package.json的main属性:

代码语言:javascript
复制
{
  "name": "tll-test-modules",
  "version": "0.0.0",
  "main": "./test.js",
  "dependencies": {
    "colors": "0.5.0"
  }
}

要查看package.json的所有属性,可用命令:

代码语言:javascript
复制
npm help json

哈哈,太多属性了,滑动着看吧,宝宝们。

浏览NPM仓库

npm有一个丰富的仓库,包含成千个模块。npm两个命令可以搜索和查看模块:search和view。例如:

代码语言:javascript
复制
npm search realtime

该命令会在已发布模块的name、tags以及discription中搜索关键字,并返回结果。

然后运行npm view + "模块名"就可以查看了:

tip: 使用npm help可查看npm 命令的帮助文档哦!例如npm help publish:

至此,我们已经搭建了node.js+npm环境喽。

Javascript概述及V8中的Javascript

Javascript概述就不做笔记了,因为这本书中讲的都是基本的,各位宝宝如果不知道这些基础应该也不会来看我的这个笔记,so,next。

V8中的Javascript

V8是是全新的Javascript引擎,以极快的运行环境和时刻保持最新并支持最新ECMAScript特性的优势,快速的蹿红。

OBJECT#KEYS

获取对象所有的自有键

代码语言:javascript
复制
var a = {a:'b',c:'d'}
Object.keys(a) //['a','c']

ARRAY#ISARRAY

获Array.isArray对数组返回true,对其他值返回false

代码语言:javascript
复制
Array.isArray(new Array)  //true
Array.isArray([]) //true
Array.isArray(bull) //false
Array.isArray(arguments) //false

数组方法

forEach()

代码语言:javascript
复制
[1,2,3].forEach(function(v){
  console.log(v)
}) // 1,2,3

filter()

代码语言:javascript
复制
[1,2,3].filter(function(v){
  return v<3
})  //[1,2]

map()

代码语言:javascript
复制
[1,10,20].map(function(v){
  return v*3
})  // [3,30,60]

字符串方法

要移除字符串首末的空格

代码语言:javascript
复制
' hello '.trim();    //'hello'

JSON

V8提供了JSON.stringfy和JSON.parse方法来对JSON数据进行编码和解码。

代码语言:javascript
复制
var obj = JSON.parse('{"a":"b"}')
obj.a = 'b';  //true

FUNCTION#BIND

V8bind改变this的引用

代码语言:javascript
复制
function a(){
  this.hello = 'world'; //true
}
var b = a.bind({hello: 'world'});
b();

FUNCTION#NAME

V8还支持非标准的函数属性名:

代码语言:javascript
复制
var a = function woot(){};
a.name = 'woot';  // true

该属性用于V8内部的堆栈追踪。当有错误抛出时,V8会显示一个堆栈追踪的信息,会告诉你是哪个函数调用导致了错误的发生:

各位宝宝们,不要傻看着,动手啊,敲代码啊!

上述例子,是个匿名函数,所以V8无法为函数引用指派名字。

当给函数命名时,有助于调试,推荐始终对函数进行命名。

_PROTO_(继承)

当给函数命名时,有助于调试,推荐始终对函数进行命名。

代码语言:javascript
复制
> function  Animal(){}
// undefined
> function Ferret(){}
// undefined
> Ferret.prototype._proto_ = Animal.prototype
// Animal {}

存取器

设置属性就用_defineSetter_,访问属性 _defineGetter_。

代码语言:javascript
复制
Date.prototype._defineSetter_('ago',function(){

    var diff = ( (new Date()).getTime() -  this.getTime() )/1000
    ,day_diff = Math.floor(diff / 86400);
   return day_diff = 0 && (
     diff < 60 && "just now" ||
     diff < 120 && "1 minutes ag0" ||
     ......
   )
})

new Date('04/05/2019').ago    //........

V8做了一件很酷的事情,它始终坚定不移的实现最新版本的ECMA标准。Node.js的核心团队也是如此,只要你安装的是最新版本的Node,你总能使用最新版本的Node,你总能使用最新版本的V8。

阻塞与非阻塞IO

咿呀,我妈催我睡觉了。宝宝们早点睡吧,听妈妈的话。明天继续~

愿我们有能力不向生活缴械投降---Lin

下一篇
举报
领券