Xiang Wang @ 2015-11-23 18:56:23
typescript
Guide
Promise
// test/promise_wait.js
function test() {
return axios.get(
"https://httpbin.org/get"
).then(res=>{
console.info("返回了数据")
console.info(res.data)
return res.data
})
}
async function await_promise() {
let prom = test()
await prom
console.info("请求执行完毕, 我才会输出, 但是需要用在async的函数里")
}
function main() {
test().then(res=>{
console.info("来了")
})
console.info("请求没执行完毕, 我会先输出")
}
内置对象
Standard built-in objects
Array数组
Boolean 返回一个数的布尔值 0, -0, null, false, Nan, undefined, ""会变成false, 其他都是true(包括
{}和[])Date
Math
Math.floor
返回的是小于等于这个数字的最大整数
Math.floor(null) = 0;
Math.floor(-5.05) = -6;
返回一个数字的divmod, 不支持负数
var quotient = Math.floor(y/x);
var remainder = y % x;
Math.round
只能返回一个整数,和python不同
Number
isInteger 返回一个数字是不是整数
Number.isInteger(0.1) // false
Number.isInteger("10") // false
Number.isInteger([1]) // false
Number.isInteger(0) // true
转化成大写数字
官网
// 通过编号系统中的 nu 扩展键请求,例如:中文十进制数字
console.log(new Intl.NumberFormat("zh-Hans-CN-u-nu-hanidec").format(number));
// → 一二三,四五六.七八九
操作符号,表达式
Expressions and operators
in
you must use index instead of value for a list, so theinoperator means has property or not, it doesn't means the object contains the itemobj = {'key': 'value'} 'key' in obj // true list = ['a', 'b', 'c'] 1 in list // true 3 in list // false 'a' in list // false
... spread syntax 展开语法
用在列表上
function sum(x, y, z) {
return x + y + z
}
numbers = [1,2,3]
sum(...numbers)
[0, ...numbers, 4]
用在字典上, 后面的会替换掉前面的
const obj1 = { foo: "bar", x: 42 };
const obj2 = { foo: "baz", y: 13 };
const mergedObj = { x: 41, ...obj1, ...obj2, y: 9 }; // { x: 42, foo: "baz", y: 9 }
逻辑操作
Logical Operators
&&and||or!not
执行顺序 Operator precedence
(...)
! ...
... < ...
!= !== == ===
... && ...
... || ...
语法
Statements & declarations
do...while 这个和while相比, 能保证执行一次.
do {
} whilte (condition);
const
continue
for
for in
function
switch
try...catch
Functions函数
Misc
待处理
webapi
atob, btoa
Element
GlobalEventHandlers
onkeydown
WebSocket API
console
Window
properties
localStorage: 返回本地存储只能保存字符串。不存在返回null
localStorage.setItem("myCat", "Tom"); localStorage.getItem("myCat") //
location 返回一个Location对象
访问新的页面: location = "https://www.mozilla.org";
刷新页面 location.reload(true);
Methods
result = window.confirm(message); if (result) { ... }
Events
其他
-
[ ] caches
[ ] indexedDB
[ ] isSecureContext
[ ] origin
[ ] clearInterval:
scope.clearInterval(intervalID)[ ] clearTimeout
[ ] createImageBitmap()
[ ] fetch()
-
function happy() { console.log(""); } var intervalID = window.setInterval(happy, 500)
setTimeout
setTimeout return an timeoutId(integer), it share the same id with setInterval. The clearTimeout() and clearInterval() can technicaly be used interchangebaly.Syntax:
var timeoutId = scope.setTimeout(function, delay, param1, param2, ...)Example:
timeoutId = window.setTimeout(window.alert, 2000, 'That was relly slow!');
scroll滚动
滚动到页面底部后更新
$(window).scroll(function() { if($(window).scrollTop() + $(window).height() +1 >= $(document).height()) { user_list_vm.show_more(); } });
第三方包
Axios
const axios = require('axios');
axios.get(
'/user', {
params: {
staff: true
}
})
.then(function(response) {
})
axios.post('/user', data)
.then(function(response) {
})
.catch(function(error) {
})
eslint
格式化代码,我自己的规则
rules: {
"indent": [
"error", 2, // 2缩进
{
"SwitchCase": 1 // switch内部也要缩进
}
],
"comma-dangle": ["error", "always-multiline"], // 多行时最后要加逗号
"no-debugger": "off",
"no-unused-vars": "off", // 开发时关闭,开发结束后打开
"semi": "never",
}
get-fqdn
const getFQDN = require('get-fqdn');
const fqdn = await getFQDN()
console.log(fqdn) // windows.ramwin.com
Lodash
一致性、模块化、高性能的 JavaScript 实用工具库。
Moment
const moment = require("moment")
var m = moment(new Date())
m.format("YYYY-MM-DD") // 生成的是m的时区的日期. 通过m.utcOffset(0)可以修改时区. 默认为当前时区
Parse, validate, manipulate, and display dates and times in JavaScript.
Document
example
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment-with-locales.min.js"></script>
<script>
var now = moment(new Date())
console.log(now.format("YYYY-MM-DD"))
console.log(now.add(12, 'days').calendar());
moment("20111031", "YYYYMMDD")
</script>
Get and Set time
let now = moment()
noe.hours(12).minutes(0).seconds(0)
manipulating
It should be noted that moments are mutable. Calling any of the manipulation methods will change the original moment.add:
moment().add(7, 'days|d|weeks|w|months|M|years|y')
计算时间
moment().add(7, 'days')
moment().subtract(7, 'days')
展示时间
moment().format() // "2014-09-08T08:02:17-05:00"
moment().format("YYYY-MM-DD HH:mm:ss")
durations
moment(moment.now() - moment.duration(2, 'hours'))
moment.substract(2, 'hours') // 但是这样原来的时间就丢失了
Papaparse
解析csv文件
import Papa from "papaparse"
Papa.parse(file|csvString|url, config: {}, complete: function(results) {})
config
{
header: true,
}
qs
解析和格式化请求参数
const qs = require('qs')
qs.parse('a=c') == { a: 'c'}
qs.stringify({a: [1,2,3]}, {indices: false}) == 'a=1&a=2&a=3'
node
modules
// animal.js
class Cat {
constructor(name) {
this.name = name
}
function say() {
console.info(`miao: ${this.name}`)
}
}
module.exports = {
Cat
}
exports.Cat = Cat
exports.Cat = class Cat {...}
// run.js
const animal = require('./animal.js')
var cat =animal.Cat('kitty')
cat.say()
vue的模块或者组件
Cat.vue
export default {
}
import Cat from "./Cat"
npm
npm config set registry https://registry.npm.taobao.org
npm config set registry https://registry.npmjs.org/
命令
npm install --save // 以前的npm需要用save来自动修改package.json. 现在不需要这个参数了
npm install ramwin@latest // 升级
npm install -P|--save-prod # 添加到dependencies
npm install -D|--save-dev # 添加到devDependencies
npm install webpack@^5
npm uninstall <package>
publish
npm publich # 发布版本
shrinkwrap 锁定版本
npm-link-save
npm-link-better
npm-link-better vue