[IT] 學寫網頁歷程

317 回覆
62 Like 21 Dislike
2018-08-29 16:07:30
你可以咁做,如果無啦啦遇到上面話嘅咩網頁訪問信息,但用緊relational database,有幾個方法

首先你可以整json file裝住佢,遇到新嘅data就push落去

第二可以整multiple json files,遇到新嘅data就create一個新嘅json file之後喺relational database記返每個json file個名,search嘅時候就可以射返去嗰個file到

第三喺run緊relational database嘅同時parallel咁整一個新嘅mongodb或者其他nosql好似redis,剩係獨立負責去解決呢個問題

因為其實無話過用緊relational database嘅時候唔可以同時run其他databases,你可以根據情況去用,好多時啲人run緊mongodb嘅同時都會整個redis剩係去處理token,但係前題係你要清楚清晰自己做緊乜
2018-08-29 19:21:07
多謝巴打教路

巴打有無入過黎睇過
[IT人入] 有無人有興趣討論下sql, no-sql 同埋 new-sql
- 分享自 LIHKG 討論區
https://lih.kg/bvQytS

2018-08-29 23:09:33
Chapter 1 - NodeJs Web Server:

下面呢段野就可以起到一個WEB Server喇, Copy 左佢 Save 落一個叫server.js 既file
var http=require('http');
var server=http.createServer(function(req,res){
        if(req.url=='/'){
            res.writeHead(200,{'Content-Type':'text/html'});
            res.write('<html><body>Hello LIHKG</body></html>');
            res.end();
        }else
            res.end('Invalid Request!');
});
 
server.listen(43210);

console.log('Server is running on 127.0.0.1:43210');

跟住就開CMD 去你個server.js file 所在既folder打command
node server.js

開browser 輸入網址, 就會見到 Hello LIHKG 呢句野架喇
http://127.0.0.1:43210/



要解釋上面做緊乜之前, 首先要解釋下OBJECT 呢樣野先 個人理解,唔一定啱

首先你有無限咁多既Lego, 跟住你有一張圖紙(CLASS), 只要跟住要圖紙就可以用D Lego 砌到間屋(OBJECT)出黎

第一個概念:
你可以砌好多間出黎,D屋所有野都一樣,但係D屋係獨立個體
, 姐係每個OBJECT 起出黎都係獨立既, 但佢地既VALUE可以完全相同.

第二個概念:
你可以比間屋做唔同既動作(FUNCTIONS), 例如開門,關門咁

概念CODE:
var houseA = house; //起一間屋出黎
houseA.openDoor(); //開門
houseA.closeDoor(); //關門

(希望有人可以幫手解得清楚D)

好喇開始解釋
var http=require('http');

require('http') 姐係要拎http 呢個package 出黎用而佢係一張圖紙, 起左個object 出黎叫做http.
var server=http.createServer(
    function(req,res){ //微波爐
        if(req.url=='/'){ //微波爐
            res.writeHead(200,{'Content-Type':'text/html'});//微波爐
            res.write('<html><body>Hello LIHKG</body></html>');//微波爐
            res.end();//微波爐
        }else//微波爐
            res.end('Invalid Request!');//微波爐
});

而http object 都係一張好大既圖紙黎(當佢係一間屋),我地淨係要createServer(當佢係間屋既廚房) 呢個parts, 所以我地再起一個object 出黎叫做 server(廚房),

咁我地再係廚房入面加個微波爐
if(req.url=='/'){ //如果佢D野係可以叮
            res.writeHead(200,{'Content-Type':'text/html'});
            res.write('<html><body>Hello LIHKG</body></html>');
            res.end(); //就比佢叮
        }else
            res.end('Invalid Request!');// 唔比佢叮
}


當預備好個廚房就要開門比人用喇
server.listen(43210);//開門, 門口叫43210, browser link: 127.0.0.1:43210


有咩講得唔好, 錯concept, 請糾正我
2018-08-30 02:50:28
其實你完全抽象咁解釋object反而仲難明
一般關於object嘅比喻都ok
但呢個chapter專講node server,新手睇res,req係咩無解釋,真係會一頭霧水
應該深入少少,簡單講下res,req係咩,同埋點解一個應該傳比user嘅object會pass落去function param度,我諗要講下少少背後個flow
2018-08-30 08:46:56
好,今晚revise下
2018-08-30 08:58:04
麻麻地like 寫web
但現在大多係web

asp.net 都ok mssql

有d 就用nonsql, 多數都係backend寫api
front end 就乜平台都用得,
2018-08-30 20:41:16
WEB 啲野 自學把啦, 工作不了
2018-08-30 22:29:26
Chapter 1.1 - NodeJs Web Server:

由唔同角度去解釋:
var http=require('http');
var server=http.createServer(
     function(req,res){
        if(req.url=='/'){
            res.writeHead(200,{'Content-Type':'text/html'});
            res.write('<html><body>Hello LIHKG</body></html>');
            res.end();
        }else
            res.end('Invalid Request!');
});
 
server.listen(43210);

console.log('Server is running on 127.0.0.1:43210');


個Program主要係分做 3 Parts:
Part 1:
var http=require('http');


呢句係載入 http 呢個package, 呢個package 係nodejs 原生既package, 唔洗經NPM Download (Reference #215, NPM 果part), 載入左就可以用佢啦
Part 2:
var server=http.createServer(
     function(req,res){
        if(req.url=='/'){
            res.writeHead(200,{'Content-Type':'text/html'});
            res.write('<html><body>Hello LIHKG</body></html>');
            res.end();
        }else
            res.end('Invalid Request!');
});


咁呢http 呢個package 就好大既, 我地淨係要用 createServer 呢個 part, 所以就開多左個object 裝住佢喇.
呢個 object 係會對http request 有反應既
Http request 其中一個例子就係你係個browser 度開一個網頁咁
例如 www.google.com, 你一禁enter ,google server 就會收到一個http request 架喇


咁個function 就係我地對呢個request 採取既動作喇
function(req,res){ // req 姐係 request, res 就係 response
        if(req.url=='/'){
            res.writeHead(200,{'Content-Type':'text/html'});
            res.write('<html><body>Hello LIHKG</body></html>');
            res.end();
        }else
            res.end('Invalid Request!');
}

個request send 去server 果陣就會send 好多data 過server既
今次我地就會用到條url 既data
req.url 
//好似LIHKG既呢個POST 既呢頁咁 https://lihkg.com/thread/793717/page/13
// req.url 就會拎到呢串string '/thread/793717/page/13'
// 咁係我呢個example入面 http://127.0.0.1/ 就淨係會拎到'/'
// 如果試下咁樣 http://127.0.0.1/comeonjames 就會拎到 '/comeonjames'


所以如果收到'/' 我地就會send 番個 html番去
res.writeHead(200,{'Content-Type':'text/html'});
res.write('<html><body>Hello LIHKG</body></html>'); //你可以係度改D內容架 唔一定係Hellow LIHKG
res.end(); // 個response 就係度停喇, 之後就要再開過新既


如果收到其他野會send 番句字'Invalid Request!' 過去

Part 3:
server.listen(43210);


上面Part 1+ 2就好似砌緊一部機咁,咁而家砌完喇
就緊係要比電佢啦.
實際上佢係會係windows 入面開左個service(如果你係用windows 既話)


咁就成功開到一個WEB Server, 都唔算好難姐

下次會講下nodejs 既framework - express.js

希望仲有人睇,再比D意見
2018-08-31 04:11:38
Very nice, 真係解哂出黎
2018-08-31 10:58:08
唔係好明 唔自己寫server咁應該要點?
2018-08-31 10:58:37
thanks
2018-09-01 02:07:39
我試解釋一次

var http=require('http');
var server=http.createServer(
     function(req,res){
        if(req.url=='/'){
            res.writeHead(200,{'Content-Type':'text/html'});
            res.write('<html><body>Hello LIHKG</body></html>');
            res.end();
        }else
            res.end('Invalid Request!');
});
 
server.listen(43210);

console.log('Server is running on 127.0.0.1:43210');


我會改少少

var http=require('http');
var action=function(req,res){
        if(req.url=='/'){
            res.end('<html><body>Hello LIHKG</body></html>');
        }else
            res.end('Invalid Request!');
};
var server=http.createServer(action);
server.listen(43210);



require('http') 

我要拎一個叫http 既工具包,入面有好多工具用既

http.createServer

呢個工具包入面,有個叫createServer 既工具, 而我咁岩想起個web server, 就用佢啦

我想起個web server, 即係我想係browser 打條link 就有野睇啦, 打條link 啪enter 果個動作就係request,而有咩野睇就係response

依家我想做到係,如果就咁打條link (url),就會出Hello LIHKG, 如果條link 有其他野,就出invalid request,所以就會係

var action=function(req,res){
        if(req.url=='/'){
            res.end('<html><body>Hello LIHKG</body></html>');
        }else
            res.end('Invalid Request!');
};


好啦, 我要話比個web server create 果時要做呢個動作先得~

var server=http.createServer(action);


port = 43210 呢樣.. 死記住先啦

server.listen(43210);
2018-09-04 00:13:19
Thanks
2018-09-04 01:36:54
Chapter 2

呢次會講下Express.JS

ExpressJS 係Nodejs 既其中一個多人用既framework.
至於framework同package咁, 當係就其他人一早寫好晒既function, 但係當然就要follow 番佢既Pattern / Rules. 用左之後會方便/加速到我地去寫呢個WEB.

簡單起一個Web SERVER 做Example 先:

1. 先用 npm init 係cmd / powershell起左一個 package.json file先
至於咩係json file, 係一種表示data既format, 有興趣可以google 下
npm init //佢會問你一D問題, 想打乜就打乜

所有既package / framework 都係比呢個file 管理, 而呢個npm init 都算係起一個 node js project 既指定動作


做完之後個package.json file 就會生左出黎係你所在既folder度.
{
  "name": "chapter2",
  "version": "1.0.0",
  "description": "lihkg web",
  "main": "server.js",
  "scripts": {
    "test": "node server.js"
  },
  "author": "",
  "license": "ISC"
}



2. 係 npm 拎個expressjs 落黎
npm install express --save



{
  "name": "chapter2",
  "version": "1.0.0",
  "description": "lihkg web",
  "main": "server.js",
  "scripts": {
    "test": "node server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {      //npm install express --save
    "express": "^4.16.3" //npm install express --save
  }
}

裝完之後就會見到個package.json file update 左, 會記住你裝左D 咩(express), 同佢係咩version (4.16.3)

3. 用express 起一個 web server:


// ES6 寫法, 新板Javascript 既樣會係咁, 遲D會大量用
// 下面會寫一個原本既寫法比大家對照下
const express = require('express');
const app = express();

app.get('/', (req, res) => {
	res.writeHead(200,{'Content-Type':'text/html'});
	res.write('<html><body>Hello LIHKG</body></html>');
	res.end();
	});

app.listen(3000, () => console.log('Server is running on 127.0.0.1:43210'));


const express = require('express');
const app = express();

app.get('/', function(req,res) {
	res.writeHead(200,{'Content-Type':'text/html'});
	res.write('<html><body>Hello LIHKG</body></html>');
	res.end();
	});

app.listen(43210,function(){console.log('Server is running on 127.0.0.1:43210')});


再對照番 chapter 1 node js 原生寫法, 會睇到係有少少唔同 http.createServer 變成左app.get喇

var http=require('http');
var server=http.createServer(function(req,res){
        if(req.url=='/'){
            res.writeHead(200,{'Content-Type':'text/html'});
            res.write('<html><body>Hello LIHKG</body></html>');
            res.end();
        }else
            res.end('Invalid Request!');
});
 
server.listen(43210);

console.log('Server is running on 127.0.0.1:43210');


但其實大家做既野都係一樣,只係寫法唔同左姐.

Chapter 2.1 express-generator

express-generator 係gen一個template 比你去跟住黎寫WEB, D野跟住佢黎擺,就唔會亂啦
npm install express-generator -g

先用npm command 裝左佢先 (最尾個-g 係global 姐係全部電腦咩位都用得)
裝完之後就可以用 express 呢個 command 黎起個 Express web template 出黎架喇
express --view=pug lihkg

--view=pug , 呢句係加一個view engine 落去, 係拎黎整美觀D既html既, 遲D用到再講.


就生左一個叫lihkg 既folder 出黎, 入面有晒d 基本野係度,點用就之後講...

最緊要既package.json 都整埋出黎喇,而家就係呢個file 發威既時候喇...
個generator 只係會講用邊D package, 但係就唔會gen埋出黎既, 我地要做既就係down 番佢要既package 落黎就用得啦
入去lihkg個folder 打command,就會自動down 晒好多既package 落黎,係node_modules入面可以睇下有幾多
npm install

再打command,就可以開到由express gen 出黎既server 架喇~
npm start

而佢今之個server 網址係呢個 'http://127.0.0.1:3000/'
見到呢頁野就知你自己得左喇



下次會講下 mongodb
2018-09-04 20:54:20
npm太慢 建議用yarn
2020-07-05 13:35:23
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞