若提到使用Node.js來架設網站,基本上都會聯想到 Express 模組,以下即是簡單地說明如何使用Node.js + Express 在十分鐘內架設一個網站。

檔案架構:

node_modules
view
--layout.ejs
--login.ejs
--index.ejs
server.js
package.json
Add a comment

這是一個常見問題,網頁上提供pdf文件的鏈接供下載,如下所示

<a href="/myfile.pdf">Download Brochure</a>

問題是當使用者點擊此鏈接時,會使用同一瀏覽器窗口中,打開該文件給予預覽。 但希望它能直接給使用者下載,不需要再打開預覽文件。

Add a comment

webpack中的三個概念module、chunk和bundle

研究splitChunks之前,我們必須先弄明白這三個名詞是什麼意思,主要是chunk的含義,要不然你就不知道splitChunks是在什麼的基礎上進行拆分。《what are module,chunk and bundle in webpack

Add a comment

二維陣列扁平化

三種不同的解決方法 將二維陣列合併為單一的陣列

給定一個陣列:

var myArray = [[1, 2],[3, 4, 5], [6, 7, 8, 9]];

我們想得到這個結果:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

方法一:

var myNewArray = [];
for (var i = 0; i < myArray.length; ++i) {
    for (var j = 0; j < myArray[i].length; ++j){
        myNewArray.push(myArray[i][j]);
    }
}
console.log(myNewArray);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
Add a comment

react-router 4中NavLink可加入activeClassName='active'屬性,使得選單在切換時class加入active,可對這個active class寫css style樣式,達到選單切換的效果。

設定成以下,to="/"表示index首頁,但是他都會一只處於active狀態,並不會因為像切換其他的選單而改變。

<NavLink activeClassName='active' to="/">
   Home
</NavLink>
Add a comment

yarn加速安裝的秘密

yarn 在於根目錄下.yarn-cache這個資料夾,會將每次安裝套件先cache一份到這來,往後如果需要相同套件,就會從這邊拉。

大多數的指令用法和原本並無差異,只要將 npm 換成 yarn即可,特別要注意的是 npm install [package] 安裝少數套件在 yarn 是不支援的,yarn 的套件都是必須儲存 (--save)。

Add a comment

介紹

SheetJS js-xlsx一款能夠讀寫Excel的.xls、.xlsx格式表格的插件,瀏覽器支持良好,並且能在多個平台上使用,目前在github上有12602個star,在這邊的範例主要使用React,再加上SheetJS js-xlsx及react-input-files,讓你一個按鈕,簡單的實現直接選檔上傳。

Add a comment

通過物件key對array進行分組,然後根據分組創建一個新的物件陣列?例如以下,有一個car陣列物件,要對make這個key作為分組關鍵:

var cars = [
    {
        'make': 'audi',
        'model': 'r8',
        'year': '2012'
    }, {
        'make': 'audi',
        'model': 'rs5',
        'year': '2013'
    }, {
        'make': 'ford',
        'model': 'mustang',
        'year': '2012'
    }, {
        'make': 'ford',
        'model': 'fusion',
        'year': '2015'
    }, {
        'make': 'kia',
        'model': 'optima',
        'year': '2012'
    },
];
//re-usable method
Array.prototype.groupBy = function(prop) {
      return this.reduce(function(groups, item) {
        const val = item[prop]
        groups[val] = groups[val] || []
        groups[val].push(item)
        return groups
      }, {})
    };

// initiate your groupBy. Notice the recordset Cars and the field Make....
const groupByMake = cars.groupBy('make');
console.log(groupByMake);

//At this point we have objects. You can use Object.keys to return an array
Add a comment