or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
NTUEE+ documentation
回MD首頁
起源
這並不是一個網頁養成班,沒辦法讓所有人把寫網頁的所有技能練習套精熟,主要學習內容是依照本網站的需求進行延伸,會從最基本的寫起,並漸漸加深加廣,目標寫出一個完整、讓人驚艷的網頁^_^背景知識
環境安裝
如果有漏掉的隨時回報
git
一樣在vscode的terminal即可
git add .
無視remote為遠端程式庫,當local的程式有更新就可以上傳到remote上,預設只有一個版本叫做origin(也就是clone的來源,github的網址),也可以自己設定其他遠端版本的連結
分支branch

善用分支讓大家的程式不打架
在自己的branch做事,確保城市沒炸掉後才可以merge。
把自己的branch發到remote,發pr。
之後可能會讓幾個人一起開發一個功能,所以可能有一個branch開了3個小branch的情況,例如:
Recruitment下有Recruitment-backend、Recruitment-frontend。
方法1:git merge
方法2:rebase

通常用在自己的branch上,特點是保持分支樹乾淨(最終會merge成一條),
例如Recruitment-backend開了個子branch <testAwait>
網站架構
front-end
react
state
axios
back-end
檔案架構
nodejs
obj小教學:
express
intro
Express.js是後端Node.js的開發框架之一,框架有點像是一個工具包,開發者能夠使用 npm(Node Package Manager) 安裝所需要的工具包到專案資料夾,輕鬆完成專案的使用環境設定,讓你專注在程式碼的撰寫與實際運行上。
route
路由是指判斷應用程式如何回應用戶端對特定端點的要求,而這個特定端點是一個 URI(或路徑)與一個特定的 HTTP 要求方法(GET、POST 等)。
每一個路由可以有一或多個處理程式函式,當路由相符時,就會執行這些函式。
路由定義的結構如下:
如果想要用一個path管理很多個路由,可以用express.Router,可以想成是迷你應用程式。
例如後端的程式由api.js控管,並輸出成一個router在/api下運作。
中介軟體
中介軟體函數是寫在route中的函式,他的input固定為「要求物件 (req)」、「回應物件 (res)」 和「執行下一個中介軟體(next)」,常見的形式為:
它是http request,內含呼叫這個url時夾帶的參數。常用的有:
前端發post時夾帶的data
前端發get時夾帶的data
拿到client的網址,考慮到上架後的網址不再是localhost,要這樣才能拿到最正確的網址,當然網路上也一定查的到其他方法。
當獲得http request後,express就會發出http response。
設定http參數
回傳資料給前端。
http code
成功通常是用200或201
失敗通常是4xx或5xx
和send差不多,但不回傳資料。
在route中可以執行很多個funciton,用
一般來說如果router呼叫同一個url兩次,則只有第一個(在檔案比較前面的)會被執行,但如果呼叫next('route'),就會切出這個route執行第二個route
一些express常見的應用
router.use(function)
強制執行所有路由都要經過他(好像要注意priority?)
通常會用來設定參數(例如index.js中的session或urlencoded或res header),或執行一些大家統一要用的參數。
Auth
驗證使用者是否有登入
multer
專門處理檔案上傳,在/register、/chVisual、/getImg有應用在照片處理
不想深入研究的話就直接套用:
validation
在執行主程式前用express-validator驗證資料格式,目的是不要讓使用者傳奇怪的資料到後端
express-validator中有三種常用函式:body、cookie、check,分別會檢驗req.body、req.cookies、req.{body,cookies,header,param,query}下指定key對應的value有沒有符合格式。
若沒有符合格式,消息會被存在req中並呼叫下一個函式:authController,express-validator下還有validationResult這個函式,用validationResult(req)可以抓到錯誤並回傳res.status(400)。
以下是我們的版本(以login為例),require validation,然後指定要檢查的欄位
mongoDB and mongoose
intro
mongoDB是一個文件導向的資料庫(database),一個資料庫底下可以有多個集合(collections),每個集合下有多個文檔(documentions)。
以我們的專案為例,我們的database存放在mongoDB online上,名叫eeplus。當中有以下collections:
而user_logins有數個documentation,格式類似json
mongoose是nodejs中用來與mongoDB溝通的套件。
一個model對應到mongoDB中的一個collection,透過schema定義格式。我們可以透過model進行doc的創建、查找、更新、刪除。
query and selector rule
update rule
其他
res.send
api doc
References
Learn Coding Websites
codecadamy(HTML, CSS, JS)
freeCodeCamp youtube channel
基礎能力學習
Git 簡介
Git environment setup
Command Line 簡介
Ric's Course
link
資料庫管理SQL
w3school
一天速成
Node.js & Express.js & Mongo.js
w3school
express_Ric
Node.js full module list
Express.js MDN tutorial
Express.js & Node.js video
Ric's ppt
JavaScript
w3school
3hr video
HTML
w3school
2hr video
CSS
w3school
2hr video