在博客閱讀:https://ssshooter.com/2019-04...javascript
距離同系列 上一篇已經一年了...仍是要驚歎時間過得是如此之快。在對前端開發熟悉以後,對「坑」的定義也發生了變化,因此記錄的反而少了,留下的都是些比較實用的方法。如今看回來,今年踏出的不尋常的一步是接觸了 RN。RN 這個東西...我對他的心情仍是挺複雜的。他確實給前端工程師提供了一個方便編寫安卓、iOS 應用的方法,可是對於一些奇葩需求仍是須要本身對接原生模塊。並且我剛進坑拉下來的第一個版本就連最簡單的 button 組件(沒記錯的話)都是有 bug 的 😂。至於將來,多了 flutter 這個競爭者,但願能夠和 RN 進行一下良性競爭?
檢查項目依賴更新的方法 2:css
npm i -g npm-check-updates ncu -u --packageFile package.json
apt-get
會安裝假的 nodejs,真·安裝方法:https://nodejs.org/en/downloa... npm 依賴能夠來自 git 倉庫連接:html
git+ssh://git@github.com:npm/cli.git#v1.0.27 git+ssh://git@github.com:npm/cli#semver:^5.0 git+https://isaacs@github.com/npm/cli.git git://github.com/npm/cli.git#v1.0.27
其實 npm 腳本也是有鉤子的,依賴這樣寫,它被安裝的時候就會自動構建啦,參考官方文檔:https://docs.npmjs.com/misc/s...vue
"scripts": { "install": "gulp build", "test": "mocha --require babel-core/register ./test/**/*.js", "lint": "eslint src/**/*.js" },
<a href="download.url" download="filename">下載</a>
爲 a 加上 download 屬性瀏覽器就會下載連接的文件而不是在新頁面打開。<iframe>
等標記中展示。一個下拉選框默認無選擇的方法java
<select> <option value="" selected disabled hidden>請選擇</option> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select>
const picked = (({ a, c }) => ({ a, c }))(object);
不能在 forEach 使用 await,forEach 要求同步函數。機制:async 函數返回一個 promise,最終是調用者處理這個 promise。然而,Array#forEach 不會處理回調函數返回的 promise,只是簡單無視了他。node
若是你須要順序執行,能夠這樣react
async function printFiles() { const files = await getFilePaths() for (const file of files) { const contents = await fs.readFile(file, 'utf8') console.log(contents) } }
// 若是你須要並行執行,能夠這樣 async function printFiles() { const files = await getFilePaths() await Promise.all( files.map(async file => { const contents = await fs.readFile(file, 'utf8') console.log(contents) }) ) }
encodeURIComponent
不處理linux
A-Z a-z 0-9 - _ . ! ~ * ' ( )
encodeURI
不處理android
A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
2011-10-05T14:48:00.000Z
這個格式很常見,這是 ISO 8601 標準,規定日期和時間中間用 T 鏈接,hh:mm:ss.sss 和 hh:mm:ss 都正確。JS 獲取此格式可使用 Date.prototype.toISOString()
。然而,轉換得來的是 0 時區的時間,若是要獲得中國(+8)時間須要new Date(+new Date() + 8 * 60 * 60 * 1000).toISOString()
x||y
必定要注意前面若是是 0
的狀況:由於你獲取數據成功,可是獲得的數據 x 若恰好是 0 就會變成用後面的 y 了。::foo.bar
等於 foo.bar.bind(foo)
const noop = () => {};
空操做函數,須要回調但無操做時使用copy()
方法,能夠用於把數據複製到剪貼板,十分有用,知道之後就不用拿 node 寫數據流了。對於對象能夠這麼寫 copy(JSON.stringify(temp6))
import
轉爲 commmonjs,啓用 tree shaking 必須 es6,因此須要使用 tree shaking 時必須關閉 babel 的模塊語法轉換。節流防抖的定義:
naturalWidth
和 naturalHeight
屬性能夠直接獲取圖片節點的原始寬高,且瀏覽器廣泛支持。數組也能夠用 __proto__
繼承
a = [] a.__proto__ = [2, 1, 2, 3, 3, 322] a[1] // 返回 1
>>
的使用:n 右移 1 位等於 n/2,右移兩位等於 n/4,類推;左移則是相反;同時左右移能夠用於去除小數 keep-alive
組件的 include 和 exclude 用的 name 是組件 name 而非路由 name。儘管不是全部屬性都支持,可是 Animated
在安卓儘量添加 useNativeDriver
Animated.timing(this.state.animatedValue, { toValue: 1, duration: 500, useNativeDriver: true, // <-- Add this }).start()
alignSelf: 'flex-start'
按平臺引入文件能夠在文件名後跟上對應平臺,引入時會自動引入對應文件。
// 定義 BigButton.ios.js BigButton.android.js // 引入時 import BigButton from './BigButton'
小程序頁面背景色
page { background-color: #f5f5f5; }
而不是 json 裏的 backgroundColor
<text>
標籤的換行符會如實反映,看起來像多了 paddingexport PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin
拯救命令丟失