原创 代碼的可維護與可拓展

代碼應該一目瞭然,不要讓維護者去猜你寫的代碼 SRP原則 & 迪米特法則 命名 把信息裝進名字裏面,包括組件的命名,css的命名,js命名(避免類似getData1,getData2,temp等無意義、有歧義的命名) 註釋

原创 node之buffer模塊

來自慕課網 let fs = require('fs') fs.readFile('logo.png',function (err, origin_buffer) { console.log(Buffer.isBuff

原创 canvas學習小結

5.H5新特性——Canvas繪圖技術 Canvas:畫布,是H5提供的2D繪圖技術。 您的瀏覽器不支持Canvas標籤! CANVAS標籤在瀏覽器中默認是300*150的inline-block

原创 css模擬行星

<html> <head> <style> .solarsys{ width: 800px; height: 800px;; po

原创 stream學習二

var stream = require('stream') var util = require('util') function ReadStream() { stream.Readable.call(this) }

原创 stream

var fs = require('fs') var readStream = fs.createReadStream('logo.png') var n = 0 readStream .on('data',functi

原创 border-image使用

效果圖 開發時遇到要給內容新增一個圖片邊框,本來是可以用background的,但爲了充分利用減少圖片的大小,就採用了border-image的特性。 border-image可能小夥伴們用的比較少,下面我來講講他的一些特

原创 stream學習

來源慕課網 var Readable = require('stream').Readable var Writable = require('stream').Writable var readStream = new R

原创 node.js之評論灌水

內容來源慕課網 let http = require('https') let querystring = require('querystring') let postData = querystring.stringif

原创 閉包創建n!

<script> function outer() { let sum = 1; return function step(n) {

原创 node.js之爬蟲實現

數據引用慕課網 const http = require('http'); const cheerio = require('cheerio'); let url = 'http://www.imooc.com/learn/3

原创 nodejs-promise實現深度爬蟲

代碼來源慕課網 const http = require('http'); const cheerio = require('cheerio'); const Promise = require('bluebird') let

原创 node 刪除並複製文件

功能:刪除dist目錄的所有文件夾,並將src目錄的文件全部複製到dist目錄 這裏並沒有使用異步刪除,因爲異步刪除和異步複製同時進行會有問題。暫時沒有很好地解決辦法。當然異步刪除速度更快。 const fs = require(

原创 高階函數之柯里化函數

柯里化函數 currying又稱部分求值。一個currying的函數首先會接受一些參數,接受了這些參數之後,該函數並不會立即求值,而是繼續返回另外一個函數,剛纔傳入的參數在函數形成的閉包中被保存起來。待到函數被真正需要求值的時候

原创 權限統一控制

權限統一控制 在很多場景下我們需要做權限控制,通常我們的做法是在場景請求數據時,在每個函數裏面去判斷是否有權限。但場景如果很多,更改權限控制邏輯時,每個場景的權限控制都要去改動,那樣就很不友好了。那我們把權限控制和數據請求分離開