Nodejs笔记

js是传值的还是传引用的

总是传值,如果修改了传的对象的属性,则表现为传引用

function changeStuff(a, b, c)
{
  a = a * 10;
  b.item = "changed";
  c = {item: "changed"};
}
​
var num = 10;
var obj1 = {item: "unchanged"};
var obj2 = {item: "unchanged"};
​
changeStuff(num, obj1, obj2);
​
console.log(num);
console.log(obj1.item);    
console.log(obj2.item);

技巧

ms: Date.now()
s: Math.floor(Date.now() / 1000)
new Date()
new Date(timestamp)
parseFloat("123.456").toFixed(2);
​
Math.round(num * 100) / 100

- 字符串替换:

replace(src, dest)

- 计算一个由某个特殊字符分隔开的字符串里面分隔的内容的个数

str.split(‘|’).length

- 创建一个固定长度的数组,带有初始化值

var arr = Array.apply(null, Array(5)).map(function () { return 0; });

- 数组拷贝,跟python一样,slice,从头到尾

var arr2 = arr1.slice();

- char和ASCII码值之间转换

‘a’.charCodeAt(0)  ==>  97
String.fromCharCode(97)  ==> ‘a'

- 删掉json里面的一个属性

delete json.abc;
JSON.stringify(obj)
Array(50).join(‘a’)

- 把一个字符串反转:

str.split('').reverse().join('');
console.time('write 100 string')
console.timeEnd('write 100 string')
if ('pro' in object)

注意点

 

- 查找子字符串是否在字符串中,如果需要正则表达式,用search,否则用indexOf会更快

- 高阶函数:把函数作为参数或返回值的函数

- 全局module安装在/usr/lib/node_modules

- 管理不同的node版本,使用nvm,或者n

apply, call和bind有什么区别?

三者都可以把一个函数应用到其他对象上,注意不是自身对象.apply,call是直接执行函数调用,bind是绑定,执行需要再次调用.apply和call的区别是apply接受数组作为参数,而call是接受逗号分隔的无限多个参数列表

怎样绑定node程序到80端口?

多种方式 1) sudo 2) apache/nginx代理 3) 用操作系统的firewall iptables进行端口重定向

exports与module.exports的区别:

module.exports 是一个Object,这个对象会被require取到, exports 是 module.exports 的一个引用, 

版本

    

- 插入号(caret)+指定版本:比如ˆ1.2.2,表示安装1.x.x的最新版本(不低于1.2.2),但是不安装2.x.x,也就是说安装时不改变大版本号。需要注意的是,如果大版本号为0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。

发一个http请求备忘

json的

var request = require('request');
var options = {
  uri: '',
  method: 'POST',
  json: {
  }
};
request(options, function (err, res, body) {
  if (err) {
    return console.log(err);
  }
  console.log(body);
});

application/x-www-form-urlencoded的:

var options = {
  uri: '',
  method: 'POST',
  headers: {
    'Content-Type' : 'application/x-www-form-urlencoded'
  },
  form: {
  }
};

常见post数据格式:

application/x-www-form-urlencoded, multipart/form-data,  application/json,  text/xml

process

process对象是Node的一个全局对象,提供当前Node进程的信息。它可以在脚本的任意位置使用,不必通过require命令加载。

process.argv:返回当前进程的命令行参数数组。 process.env:返回一个对象,成员为当前Shell的环境变量 process.stderr  错误流 process.stdin    输入流 process.stdout  输出流

splice 移除元素:

> myArray = ['a', 'b', 'c', 'd']
  ["a", "b", "c", "d"]
> myArray.splice(0, 2)      // 从0开始,去掉2个元素
  ["a", "b"]
> myArray
  ["c", "d"]

解决安装node后说没权限的问题

sudo chown -R `whoami` ~/.npm
sudo chown -R `whoami` /usr/local/lib/node_modules

生成随机字符串

Math.random().toString(36).substr(2);

npm

--save-dev

npm install babel-plugin-component -D

--save

npm i element-ui -S

备忘

function format(d) {
    return d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
}