方格精選

React Hello World

更新於 發佈於 閱讀時間約 4 分鐘
接續上一篇,這邊要來寫一個React hello world app,最後安裝webpack-dev-server來提升開發效率。
使用npm安裝react, react-dom:
$ npm install react react-dom --save
dependencies下紀錄的是生產環境會用到的套件,這邊不使用--save-dev是因為生產環境也會用到react。
建立app.jsx:
修改index.html:
值得一提的是,跟上篇不同,這次把bundle.js放在body的最後,主要是因為scope問題,jsx中有取得root element的語法,因此才要放在這。
index.js跟上篇一樣不變:
接著,由於瀏覽器只看得懂javascript,因此為了將jsx編譯成js,需安裝babel loader與core:
$ npm install babel-loader --save-dev
$ npm install @babel/core --save-dev
安裝@babel/preset-react,主要用來把jsx檔案編譯成javascript:
$ npm install @babel/preset-react --save-dev
安裝翻譯ES6語法的preset,用來將ES6語法編譯成ES5:
$ npm install @babel/preset-env --save-dev
設定webpack.config.js:
entry中加入app.jsx,即jsx的內容也會被編譯到public/bundle.js去。
module下的rules的.jsx那邊的設定,意思是副檔名.jsx的檔案使用preset-react編譯成javascript ES6,再用preset-env編譯成ES5語法。
.js的設定則是把.js使用preset-env編譯成ES5語法。
最後打包:
$ webpack --mode production
打開index.html:
打開bundle.js會發現程式碼被編譯與壓縮過了:

如果每次改完code就要打包一次,然後網頁再重新整理一次來測試,這樣會累死啊!
可以安裝webpack-dev-server這個好用的東西,來簡化這個流程:
$ npm install webpack-dev-server -g
修改webpack.config.js:
這邊指定開啟的port為9000,若沒指定預設是8080。
這邊要記得設定contentBase,因為我們輸出的bundle.js是指定到public下,如果沒有設定這個,dev server會不work,也就是你code存檔了,但卻沒即時刷新瀏覽器。
開啟server指令:
$ webpack-dev-server
指令如果覺得很長麻煩,可以做以下設定:
設定package.json:
加入紅框的設定,之後可以直接執行:
$ npm run open
來打開dev server!
後來發現執行後出現這個error,是因為webpack-cli 4已經删除了webpack-cli/bin/config-yargs文件,因此要uninstall改裝3的版本:
$ npm uninstall webpack-cli
$ npm install webpack-cli webpack-cli@3.3 -S
接著你每次改程式碼儲存後,就會自動幫你build, refresh瀏覽器,是不是很方便呢?
另外如果IDE是用VSCode,甚至不用輸入指令直接點Debug icon就執行dev server了,如下圖紅框:
開啟localhost:9000,接著更動app.jsx儲存,會發現瀏覽器會即時更新:
完整source code:
為什麼會看到廣告
avatar-img
21會員
161內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Vic Lin的沙龍 的其他內容
React開發有兩種方式,一種是使用CDN方式include react的官方lib,然後使用babel來將JSX編譯成瀏覽器看得懂的javascript。 但是在react中還會使用到sass, scss等等,還需要額外編譯成css瀏覽器才看得懂。 而webpack的誕生,就是為了解決上述的問題,
在select的時候發現回傳的primary key都是0,這時可能是因為primary key為非數字,如果沒有在model定義 auto increment是false, 預設會認為是true,所以要在model中多設定這行: public $incrementing = false; 本筆
1. 進入https://notify-bot.line.me/zh_TW/ 登入line後,點選右上角個人頁面 2. 點選發行權杖, 輸入名稱與要接收通知的群組。 按下發行後,複製token。 3. 記得將LINE Notify這個帳號加入該群組中: 4. 使用curl發送訊息: curl
直接從程式碼來看,假設code這樣寫: $this->customer->select(['id']) ->where('cell_1', '=', $cell_1) ->orWhere(function ($query) use ($cell_2) {  $query->whereNotNull
在Model中常看到這兩個屬性fillable, guarded: protected $fillable=['name','job']; protected $guarded=['user_id']; 其中guarded是黑名單的意思,fillable則是白名單。 這兩個屬性是用來設定是否允許批量
使用者第三方登入如何發送JWT token呢? 以google登入為例,大致上邏輯會是這樣: E 若是DB已有user的資料,從DB table抓出目前登入的user row data,來產生token,並將token回傳給前端。 若沒有資料則把資料存到DB,一樣產生token回傳。 只不過範例中是
React開發有兩種方式,一種是使用CDN方式include react的官方lib,然後使用babel來將JSX編譯成瀏覽器看得懂的javascript。 但是在react中還會使用到sass, scss等等,還需要額外編譯成css瀏覽器才看得懂。 而webpack的誕生,就是為了解決上述的問題,
在select的時候發現回傳的primary key都是0,這時可能是因為primary key為非數字,如果沒有在model定義 auto increment是false, 預設會認為是true,所以要在model中多設定這行: public $incrementing = false; 本筆
1. 進入https://notify-bot.line.me/zh_TW/ 登入line後,點選右上角個人頁面 2. 點選發行權杖, 輸入名稱與要接收通知的群組。 按下發行後,複製token。 3. 記得將LINE Notify這個帳號加入該群組中: 4. 使用curl發送訊息: curl
直接從程式碼來看,假設code這樣寫: $this->customer->select(['id']) ->where('cell_1', '=', $cell_1) ->orWhere(function ($query) use ($cell_2) {  $query->whereNotNull
在Model中常看到這兩個屬性fillable, guarded: protected $fillable=['name','job']; protected $guarded=['user_id']; 其中guarded是黑名單的意思,fillable則是白名單。 這兩個屬性是用來設定是否允許批量
使用者第三方登入如何發送JWT token呢? 以google登入為例,大致上邏輯會是這樣: E 若是DB已有user的資料,從DB table抓出目前登入的user row data,來產生token,並將token回傳給前端。 若沒有資料則把資料存到DB,一樣產生token回傳。 只不過範例中是
你可能也想看
Google News 追蹤
Thumbnail
最近國泰世華CUBE App推出的「美股定期定額」功能,讓使用者可以方便地進行跨境理財(但讀者仍需根據自身需求審慎考量),除了享有美股定期定額的新功能,也同時享有台股定期定額的功能,可以一站滿足我們理財的需求! 透過國泰世華CUBE App線上開台股證券戶+複委託戶,流程最快僅需要5分鐘。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
先從react開始: 其實市面上有許多前端框架像是react,angular,vue... 至於為什麼我會選擇react…
※ 補充說明: ※ npm 常用指令: ◦ npm init–y:快速初始化一個新的 Node.js 並建立一個 package.json 文件的命令。 ◦ npm info 套件名稱 version:快速查詢指定 npm 套件的最新版本號。 ◦ npm install套件名稱:用來安裝
Thumbnail
本章節將引導你如何建立一個TypeScript開發環境,這包括安裝Node.js、npm和TypeScript,建立一個TypeScript項目,設置編輯器,以及編寫和編譯TypeScript代碼。在完成這些步驟之後,你將能夠編寫、編譯和運行TypeScript代碼。
Thumbnail
套件(Package)是將程式或程式庫進行組織、分發和共享的一種方式。在軟體開發中,套件通常包含了相關的程式碼、資源文件和元數據,並提供了統一的名稱空間和版本管理。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
在程式任何地方都能修改各種react組件狀態的做法分享
Thumbnail
Vite 是由 Vue 開發者 Evan You 所開發出來,用來加快、優化程式碼打包的工具,在這裡我們不免會需要提到大部分前端開發者可能都會聽過、使用過的前端工具:Webpack。 在那之前,我們先來聊聊為什麼前端會需要所謂的打包工具呢?
Thumbnail
Express 是一個流行的 web 框架,使用 JavsScript 實現,執行在 node 環境上,主要用來寫後端應用。
Thumbnail
前言 現在的前端需求已經越來越高,要考慮HTML及CSS的切版美觀程度,以及React以及Flutter所提出的元件(Componet、widget)觀念,也就是將元件模組化,使元件可以更動態的被程式運行,而不用靜態的客製化每一個介面。開發一個好的元件可以提升整體的開發速度,讓任何使用元件的開發者
Thumbnail
在 2021 年的剛轉職成為前端工程師的時候,我在面試時滿常會被詢問到 JavaScript 中閉包的議題,當時候自己回答的滿差的,於是在 2022 年時,我寫了一系列的有關於函式程式設計鐵人賽的文章, 裡頭就有簡單提到有關於閉包的議題。
Thumbnail
最近國泰世華CUBE App推出的「美股定期定額」功能,讓使用者可以方便地進行跨境理財(但讀者仍需根據自身需求審慎考量),除了享有美股定期定額的新功能,也同時享有台股定期定額的功能,可以一站滿足我們理財的需求! 透過國泰世華CUBE App線上開台股證券戶+複委託戶,流程最快僅需要5分鐘。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
先從react開始: 其實市面上有許多前端框架像是react,angular,vue... 至於為什麼我會選擇react…
※ 補充說明: ※ npm 常用指令: ◦ npm init–y:快速初始化一個新的 Node.js 並建立一個 package.json 文件的命令。 ◦ npm info 套件名稱 version:快速查詢指定 npm 套件的最新版本號。 ◦ npm install套件名稱:用來安裝
Thumbnail
本章節將引導你如何建立一個TypeScript開發環境,這包括安裝Node.js、npm和TypeScript,建立一個TypeScript項目,設置編輯器,以及編寫和編譯TypeScript代碼。在完成這些步驟之後,你將能夠編寫、編譯和運行TypeScript代碼。
Thumbnail
套件(Package)是將程式或程式庫進行組織、分發和共享的一種方式。在軟體開發中,套件通常包含了相關的程式碼、資源文件和元數據,並提供了統一的名稱空間和版本管理。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
在程式任何地方都能修改各種react組件狀態的做法分享
Thumbnail
Vite 是由 Vue 開發者 Evan You 所開發出來,用來加快、優化程式碼打包的工具,在這裡我們不免會需要提到大部分前端開發者可能都會聽過、使用過的前端工具:Webpack。 在那之前,我們先來聊聊為什麼前端會需要所謂的打包工具呢?
Thumbnail
Express 是一個流行的 web 框架,使用 JavsScript 實現,執行在 node 環境上,主要用來寫後端應用。
Thumbnail
前言 現在的前端需求已經越來越高,要考慮HTML及CSS的切版美觀程度,以及React以及Flutter所提出的元件(Componet、widget)觀念,也就是將元件模組化,使元件可以更動態的被程式運行,而不用靜態的客製化每一個介面。開發一個好的元件可以提升整體的開發速度,讓任何使用元件的開發者
Thumbnail
在 2021 年的剛轉職成為前端工程師的時候,我在面試時滿常會被詢問到 JavaScript 中閉包的議題,當時候自己回答的滿差的,於是在 2022 年時,我寫了一系列的有關於函式程式設計鐵人賽的文章, 裡頭就有簡單提到有關於閉包的議題。