[請益] node.js問個很基礎的問題

看板 Soft_Job
作者 sec5566 (sec)
時間 2018-09-11 17:46:48
留言 195則留言 (50推 10噓 135→)

從入行到現在知道有這個框架, 看過一些介紹, 但是沒真正用過, 就知道他是寫js的環境, 那問題來了,平常寫網頁, 打上<script>不是就可以寫了, 為何需要用node.js? 或是直接副檔名js, 引入html在瀏覽器上跑不就好了? 突然好像有點想通了, node.js是不是直接把js當後端來用, 就是像php這樣, 我之前是一直卡在js是前端語言的觀念, 一開始我就是前js後php, 所以一直覺得很奇怪, 我這樣理解對嗎? ----- Sent from JPTT on my Sony H4331. -- 我知道超基本的一定被噓, 但是我真的不知道和想知道捏, 一直都寫php跟html從來沒用過這個 node.js? 可是開發web怎麼會沒瀏覽器?
其實維基的我看了無數次, 包括也上it邦找過, 最後只知道他可以寫js或是介紹怎麼寫語法, 可是沒有人講為何不直接寫在網頁上就好 前端就類似餐廳裡的點菜櫃檯, 是使用者看到的, 後端就是內場的廚師這樣, 是功能面的 我不是資訊系的 反覆看了統整意思是, js不一定只能用在網站上, 而且node.js提供一個很好的環境去跑js這樣吧? 那你要不要說哪裡有錯, 我又查看一遍前後端的資料, 不覺得我理解的哪裡有錯
※ 批踢踢實業坊(ptt.cc), 來自: 223.140.203.218
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1536659211.A.C90.html

deray: 一百分!超過一百分!09/11 17:51

stevekevin10: 你入行了?09/11 17:51

highland: 先幫補血09/11 17:52

Severus5566: 樓樓上超酸09/11 17:53

deray: Q. 要如何在沒有瀏覽器的環境執行javascript?09/11 17:56

alog: 你大概要先把人家語言發展的歷史摸清楚再來問會比較合適 09/11 18:00

alog: 然後以現在的情況來說 就算你不用 nodejs 你用的軟體底層一 09/11 18:00

alog: 部分的實做就是要nodejs或自帶相關引擎 09/11 18:00

ij1001: Nodejs 是運作在伺服器端,是處理收發請求的,跟客戶端拿 09/11 18:00

ij1001: 來瀏覽,兩者運作所使用的情境是不同的。即便是用同樣的語 09/11 18:00

ij1001: 言,但聊的事情講的內容是不一樣~ 09/11 18:00

alog: 你要用的開發工具可能有一部分要從nodejs的npm去裝 09/11 18:01

alongalone: 戰起來 站起來 09/11 18:03

lk2986706we: 你的瀏覽器會直接連資料庫嗎 09/11 18:12

alihue: 這種問題在 stackoverflow 應該是 -1000 等級 09/11 18:31

peanut97: nodejs 是後端語言,跟PHP 一樣層級 09/11 18:31

windclara: 原來您的瀏覽器自帶所有功能 都不用GET跟POST了呢 09/11 18:48

kroutony: 在你開始寫程式之前,建議先了解前端跟後端的分別 09/11 18:54

kroutony: 以及他們是如何交流的 09/11 18:55

fukinhot: 其實嚴格來說nodejs 就是包了一個瀏覽器 讓我們能夠像 09/11 19:49

fukinhot: 是在執行console app一樣執行js 09/11 19:49

fukinhot: 樓上各位都太兇了 我反而覺得不懂但不好意思問的人比較 09/11 19:51

fukinhot: 慘 09/11 19:51

fukinhot: 而且感覺樓上有人直接把nodejs == express / koa了? 09/11 19:53

abc01251: 大家不要這樣..當初各位入行一定也問過蠢問題,也被前 09/11 20:01

abc01251: 輩酸!不過大家當年一定不希望被這樣對待,現在也不要 09/11 20:01

abc01251: 扼殺幼苗吧! 09/11 20:01

alihue: 知道會被噓還不自己先玩過再來問 09/11 20:06

mdkn35: Id後面有5566應該是老人 怎可能還會問這種問題...... 09/11 20:12

longlongint: 用 nodejs 就可以不用學 php (誤 09/11 20:13

longlongint: nodejs > python > php > cgi (誤 09/11 20:13

longlongint: 戰起來 戰起來 09/11 20:13

vi000246: 下一篇 為什麼python不能在瀏覽器執行 09/11 20:24

FrozenMoment: go go go! 09/11 20:38

yuigahamayui: 可憐,這種也稱自己入行 09/11 20:49

x000032001: golang > 其他 09/11 20:52

DirtyVegas: 有勇氣給推 09/11 20:59

diabloevagto: Node 包了瀏覽器???差太多了啊...... 09/11 21:05

godddddd: 因為作者把v8拿來用 包成node.exe 09/11 21:08

godddddd: 接著node js檔案就能自動直譯js語言 產生想要的東西 09/11 21:09

godddddd: Express koa是專門寫後端常見的npn module 09/11 21:10

godddddd: 然後有一堆的middle ware 可以處理類似java 攔截器過濾 09/11 21:10

godddddd: 器功能 09/11 21:10

godddddd: 大概是這樣 很久沒碰 可能有錯 09/11 21:11

evilcherry: 人家很明顯就沒碰過backend... 09/11 21:17

littlethe: 大家別酸他嗎,人都有剛開始什麼都不懂的時候ㄚ,應該 09/11 21:19

littlethe: 要多鼓勵新人 09/11 21:19

jackace: 其實推文裡也一堆人觀念有問題 不曉得是不是反串 09/11 21:28

nekosgr93: 所以nodejs到底是語言?框架?complier?越講越亂了 09/11 21:49

evilcherry: Runtime 09/11 21:56

alog: Nodejs就是一整套的程式執行環境,帶著google v8引擎跟自己 09/11 21:58

alog: 兜的模組來執行所有程式設計師寫好的js腳本,可以用你最熟悉 09/11 21:58

alog: 的js語言來寫有關伺服器/服務應用、CLI工具等各種玩意,在ja 09/11 21:58

alog: vascript有很重要的地位 09/11 21:58

alog: 早期開發者都因為他的架構特性可以達到較高併發跟執行效率吸 09/11 22:00

alog: 引,拿來寫web有一部分都是為了應付大流量時操作運送、同時 09/11 22:00

alog: 在線的需求 09/11 22:00

alog: V8的regular express引擎寫的也很好寫parser速度有時候還比g 09/11 22:02

alog: olang的還快 09/11 22:02

alog: 但老實說 你說一定要用nodejs寫web 用啊 完全看你的需求跟工 09/11 22:05

alog: 時、現有熟悉的資源 用別的語言跟工具環境都一樣有解 09/11 22:05

alog: 不用* 09/11 22:06

alog: 只是以現今來說 你就算不用nodejs 做後端的資料處理,但你 09/11 22:10

alog: 還是可以享有nodejs社群開發的出來的成果,很多工具你都可以 09/11 22:10

alog: 用nodejs裡的npm裝一裝拿起來用 就例如你要寫個vuejs還是要 09/11 22:10

alog: 透過npm裝 包括其他語言的框架裡要執行某些東西處理也是會ca 09/11 22:10

alog: ll nodejs來做 而不是用該語言再重造輪子 09/11 22:10

alog: nodejs 可以寫的東西很多 開發者累計起來的資源也不少 可以 09/11 22:16

alog: 不用當只是拿來寫web工具去看待他 09/11 22:16

senjor: 當成C#或者python之類的去看待他就好了 09/11 22:20

FF16: 在寫網頁上,nodejs的角色比較像是編譯器,他其實是把一堆 09/11 22:20

FF16: javascript編譯成javascript 09/11 22:21

menshuei: 等等你真的把js寫在script標籤裡? 09/11 22:25

ku399999: 一句話:node可以做瀏覽器做不到的事 09/11 22:47

u1240976: nodejs 不是包瀏覽器啦XD, HTML/CSS/DOM 都要哭了QQ 09/11 22:53

u1240976: nodejs/browser js的差異,大概就像desktop/android java 09/11 22:57

Souseasou3: 哪間?這樣還入行 09/11 22:58

a2551127: 幫幼苗補血 09/11 23:07

sharku: 讚喔 09/11 23:09

XXXXLAY: 老人不能學nodejs哦?QQ 09/12 00:16

vencil: 這種東西不是google就知道了? 這樣敢說入行... 09/12 00:42

TitanEric: 這樣算入行 厲害了 09/12 00:48

crazwade: 真的建議你去google... 雖然我也不太懂 但有寫過一些 09/12 01:15

cha122977: 沒網頁時你怎麼用js寫程式?nodejs就提供這個功能啦 09/12 01:35

dnabossking: alog說的大至上都正確 09/12 02:04

dnabossking: 看alog說的就好 09/12 02:05

nekosgr93: nodejs也可以拿來寫桌面應用吧 像現在很紅的vscode和 09/12 02:56

nekosgr93: 之前的atom 09/12 02:56

stormcorn: 怎麼都不先查基本資訊的 09/12 04:28

UniFish: 原po的問題需要的答案明明很簡單,為何推文各種繞彎XDDD 09/12 08:20

async: 不了解可以學一下看看,我也是學了一下就解惑了 09/12 09:19

FF16: UniFish 原po問的問題其實很難回答,因為你可以從他問的問題 09/12 09:49

FF16: 看出他缺乏某些基本觀念,所以如果想回答他,那得先講解基本 09/12 09:49

FF16: 觀念。 09/12 09:49

flowwinds: 先看看nodejs的wiki.. 09/12 10:33

singergod: google 一下馬上知道的東西,這樣自稱入行? 09/12 10:37

YukiTW: 他還有無網頁的應用,我最近就做一個側錄網路封包的功能 09/12 11:37

YukiTW: 就用到 node.js 09/12 11:37

youuuuuli: 笑。厲害 09/12 12:39

Masakiad: 不知道在冷嘲熱諷什麼,原po也沒說自己多senior,也自 09/12 13:20

Masakiad: 知問題很蠢,但有問想知道答案應該鼓勵而不是這樣笑他吧 09/12 13:20

alihue: 問問題前先「嘗試、找資料」是軟工基本素養。要問也是自己 09/12 13:54

alihue: 玩過,再問卡住不解的地方。這種大哉問就是欠噓,被噓也是 09/12 13:54

alihue: 寫程式的必經之路 09/12 13:54

vi000246: 是啊 這問題在stack overflow大概會被噓爆09/12 14:19

devil115789: Node.js是一個能夠在伺服器端運行JavaScript的開放09/12 14:28

devil115789: 原始碼、跨平台JavaScript 執行環境。09/12 14:28

devil115789: 他不是一個檔案名稱叫node副檔名為js的檔案09/12 14:28

devil115789: 執行環境,不是開發環境09/12 14:29

Jasonnor: https://i.imgur.com/85K4bMk.png09/12 16:30

benson1212: 推薦你一個東西叫維基百科 很棒快學起來 科科09/12 17:32

brianhsu: 先搞懂你的程式碼是在哪台機器上執行的(client side / s09/12 17:39

brianhsu: erver side) 應該就不會有這個問題了。09/12 17:39

deray: 這不噓一下不行 「沒有人講為什麼不寫在網頁就好」09/12 19:13

wanderchang: 又一個被browserify慣壞的09/12 19:31

kurtsgm: 我覺得你好像搞不太清楚前後端的差異捏...09/12 19:33

johsin605: 不忍噓09/12 19:58

lion0208: nodejs 不是跑在瀏覽器的,只是語言是 javascript,現09/12 20:27

lion0208: 在 javascript 可以跑在非常多地方,不是只在瀏覽器了09/12 20:27

art1: 可能不是本科畢業的,對於電腦的基礎知識不了解09/12 21:39

longlyeagle: .09/12 22:16

BignoZe: 敢上來問贏過很多人了 加油09/12 22:21

nekosgr93: 其實剛入門去查定義真的有看沒有懂 像那個api去看維基09/12 23:22

nekosgr93: 根本不知道在工三小 如果沒有讀文件的能力就更慘了09/12 23:22

alog: 如果你只是想問「為何不直接寫在網頁就好」09/12 23:36

alog: 那麼我可以直接回答你,大多半的主因,是現在你接觸到的專案09/12 23:36

alog: 不需要這個東西,又或者是你已經在用了,但是軟體工具已經包09/12 23:36

alog: 得很好,你沒有感覺。09/12 23:36

alog: 以一般寫網頁入門或是維護舊系統來說,假設後端語言是 php,09/12 23:37

alog: 那麼搭配的前端一定是傳統 js 最多搭上 jquery 足以使用。09/12 23:37

alog: 通常程式寫是能上多少 script tag 就上多少 tag09/12 23:37

alog: 反正需要引入什麼就用什麼,沒問題啊,妥妥的。09/12 23:37

alog: 但是如果你今天的需求是一個複雜的前端,動不動就有上百個09/12 23:37

alog: javascript 檔案合在一起09/12 23:37

alog: 請問您是要重整理你的 javascript 程式碼的架構,還是繼09/12 23:37

alog: 續維護這些複雜的東西呢? 09/12 23:38

alog: 當然我們可以選擇,繼續使用一般的使用方式繼續寫下去,然 09/12 23:38

alog: 後就是反正問題出現在說 09/12 23:38

alog: 但如果每一次需求會不同,或是未來還要加東西處理,例如要 09/12 23:38

alog: 對你的 source code 做 minimize 或 obfuscate、 09/12 23:38

alog: 使用別人的使用者介面的框架來方便開發 (vuejs/reactjs)、 09/12 23:38

alog: 導入單元測試、或是用其他的語法 ( 如: coffeescript、 09/12 23:38

alog: 更新的 ecma script 版本 ) 來寫 javascript 等各種需要 09/12 23:39

alog: 是必須要有一個工具、轉換器來處理資料這些資料 09/12 23:39

alog: 像是做前端打包可能會用到 webpack 因為有些專案的複雜程度 09/12 23:39

alog: 超出你的想像,或是有別的考量,都需要一個好的工具、環境 09/12 23:39

alog: 或許你還是有一個疑問,就是我真的也不需要這麼複雜啊 09/12 23:40

alog: js 我還是可以照傳統的方式寫 09/12 23:40

alog: 那麼就講一個比較容易懂的,今天有一個玩意叫做 scss 09/12 23:40

alog: 它可以方便你開發跟撰寫 css 內容,再搭配其他的東西來 09/12 23:40

alog: 整合、壓縮、或是其他處理 ( like autoprefixer ) 09/12 23:41

alog: 以前有一個東西叫 compass app 09/12 23:41

alog: 也有一個東西叫做 middleman 他們都可做到 09/12 23:41

alog: 但是如果我在純 javascript 環境, 09/12 23:41

alog: 有沒有現成的工具讓我編譯處理,有,而且很多 就現在很多 09/12 23:41

alog: 多到你不知道用哪一個的狀況 09/12 23:41

alog: 在這些新穎技術的發展中,nodejs 提供了很多開發者的未來跟 09/12 23:41

alog: 可能,這套環境讓別人、你、我們可用最熟悉的工具來做,很多09/12 23:42

alog: javascript 知名的 library 可能都是 nodejs 的環境09/12 23:42

alog: 來開發的程式,以便好安排架構、做編譯,細心的團隊還會加上09/12 23:42

alog: 測試確保在長期維護下品質穩定09/12 23:42

alog: 你說這麼好用的工具跟環境架構,怎麼不會有人利用跟開發耕耘09/12 23:43

alog: 他本質就不是用來寫在網頁上的,已經說了這是程式的執行環境09/12 23:43

alog: 做 web 後端只是當初開發歷史發展下的一個產物,09/12 23:43

alog: 現今的這個 nodejs 早就在很多開發上無所不在,09/12 23:43

alog: 包括現在用的 vscode、atom 是 github 的 electron 專案09/12 23:43

alog: ( chromium + nodejs ) 延伸出來的,09/12 23:44

nekosgr93: 推 搞不懂在幹嘛可能是現在沒需求 等用到了就自然懂了09/12 23:47

alog: 原PO安捏你剛災,其實我也很難解釋這東西的用途,我盡量了。09/12 23:47

v9290026: 推alog好心大大09/13 00:06

a8084123: 推alog大解說09/13 02:45

ken90242: 還好啦 釐清疑惑也不賴09/13 09:26

EightXD: 這個是我剛入行並碰Web相關第一個月搞不清楚的問題09/13 12:27

for5566: 是誰你不是不懂後端,連網頁前端都沒搞懂,別碰nodeJS了09/13 13:42

for5566: ,先把瀏覽器架構這前端基礎搞懂再說吧09/13 13:42

lturtsamuel: search the fucking giogle 09/13 18:46

lachtchlee: 簡單補一句 在Node.js裡 沒有DOM給你玩 沒html 沒css 09/13 20:32

evilcherry: 總覺得以前端三寶和PHP接觸編程的很難明白一些概念 09/14 13:06

kurtsgm: 你第二段那樣就沒錯了 nodejs要當作跟php類似的東西 09/14 20:30

kurtsgm: 你以前是前js後php 現在就是前js 後js 但兩個依舊分開跑 09/14 20:30

typepeter: 瀏覽器可以開server給別人連嗎? 09/16 09:33

typepeter: 可以是可以 比nodejs吃資源 09/16 09:33

typepeter: 瀏覽器可以讀檔案嗎? 09/16 09:33

typepeter: 如果不是使用者主動操作是完全不能用程式操作的喔 09/16 09:33

typepeter: 基本上想用瀏覽器作後端幾乎什麼都很難作 09/16 09:33

typepeter: 又吃資源 再者和底層幾乎無法整合 09/16 09:33

typepeter: 你可以試試用瀏覽器寫一個後端 09/16 09:33

typepeter: 寫到最後你會想要打爛電腦 09/16 09:33

potatososo: 推 09/17 21:48

lineage0916: A大真的好心,有時候對人要仁慈一點,也許妳自己當 09/20 23:04

lineage0916: 初新手時也被人這樣酸過,而且你的感受一定也不可能 09/20 23:04

lineage0916: 會爽,但用這種方式對待別人,你的心態也或成跟當初 09/20 23:04

lineage0916: 酸你的人一樣囉? 09/20 23:04

s106667: 現在js一條龍 大前端時代 03/26 20:46

s106667: js可以做太多事情了 03/28 00:55

您可能感興趣