簡體   English   中英

使用Node.js構建網站的最佳實踐

[英]Best practices of building a website using Node.js

我想知道如何用Node.js從頭開始開發一個網站。 我理解我怎么可能這樣做,但我對最好的設計實踐很感興趣。

我需要這個理論網站:

  1. 做了很多AJAX
  2. 非常直截了當
  3. 相對較小
  4. 連接到...讓我們說一個MySQL服務器

在PHP中,構建一個非常小的網站非常簡單 - 我在Apache和MySQL服務器上設置PHP然后執行以下操作:

  • includes/db/ ,它具有用於連接到db的connect.php,具有公共db相關功能的文件,等等
  • includes/layout/有footer.php,header.php和其他布局相關的東西
  • includes/users/處理用戶相關的操作

那么PHP只是讓你構建頁面並將這些文件包含在一起形成一個網站 - 我可以這樣:

<?php
   require_once('inclues/users/user_session.php');
   require_once('inclues/db/connect.php');
   require_once('inclues/design/header.php')
?>

// Other php or html or related content relating to the page

<?php
   require_once('inclues/.../footer.php');
?>

我想知道Node.js中可能有什么相似之處 - 我正在尋找一種方法來實現這一點,盡可能簡單快速直接

如果答案不簡單,我會喜歡推薦書,我不介意閱讀。

我喜歡基於事件的編程,我非常喜歡JavaScript的能力,我對Node.js感到非常興奮。 我想學習如何從一開始就以正確的方式開發這種東西。

從壞消息開始:由於Node.js是一種非常年輕的技術,我認為你會發現創建一個完整的網站並維護/操作它的過程將與你現在習慣的非常不同。

Josh3736補充說: 一旦你弄清楚Node.js及其各種軟件包(Connect,Express)如何工作,我發現你可以非常快速地開發新網站。

Node.js中當前存在的粗糙邊緣,加上其開發的快節奏和所涉及的所有模塊都會使事情復雜化,並使事情變得不那么簡單,快速和直接。

把它排除在外,這是個好消息:

節點包管理器,NPM有很多很好的工具和框架來擴展Node.js的簡單功能,使其適合創建一個網絡服務器。

最值得注意的是Express Framework ,其中包含運行Web服務器所需的幾乎所有內容(包括cookie,會話和路徑路由)。 另外Express支持partials,它負責你的頁眉和頁腳包含。

Express建立在Sencha的Connect之上。 Cookie和會話實際上由Connect提供支持。 Express可以簡化您的路由並處理視圖/部分。 因此,如果你不需要Express附帶的所有鈴聲和口哨,你可以選擇Connect。

如果您想為這些局部使用模板, Jade模板引擎可以為您加速。 雖然Josh3736指出翡翠很慢而且空白很重要。 可以在這里找到更完整的概述,其中包括他最喜歡的, doT (我個人僅將Node.js用於基於socket.io的應用程序,所以在模板方面他是一個比我更好的資源)。

可以使用db-mysql模塊從Node.js連接到MySQL,但是如果您不需要它,因為您正在訪問連接到已經存在的系統的數據,我建議使用更多...'現代'方法,即使用NoSQL數據庫,因為大多數Node.js項目似乎都如此。 通過Mongoose的 MongoDB是流行的方式。

或者,如果它只是存儲您感興趣的對象,那么只需選擇Redis (無論如何您可能需要它)。

一旦您的網站完成,您將必須部署它並確保它繼續運行。 有很多方法可以做到這一點,例如使用內置集群支持或使用功能更友好的forever npm模塊。 有關更多信息,請參閱我的這個問題。

結論

我想要的是這個:

詢問在Node.js中構建網站的最佳實踐是什么,與詢問在PHP中構建網站的最佳方式是一樣的:100位開發人員會給出100個不同的答案。

NPM擁有各種優秀的框架,可以大大簡化所涉及的許多任務,但這一切都基於偏好,哪一個是真正的方法。

正如我所說,Node.js仍然是一種非常年輕的技術,因此沒有任何框架或其他工具已經成為“事實上的標准”; 對於你正在嘗試做的大多數事情,可能有各種各樣的選擇,並期望你的代碼在更新期間使用大部分代碼時會中斷,因為Node.js本身和大多數模塊的開發都是快節奏的。 你必須跟上。

把它們放在一起

正如我所說,我對Node.js的主要生產用途是能夠使用socket.io ,所以我沒有任何好的生產示例(並且因為我即將離開當之無愧的假期我沒有時間把它們放在一起)。 雖然有一些很好的例子:

同樣,前進的方式(以及隨后的示例)在很大程度上取決於您的最終目標和所選擇的技術,但幸運的是,有足夠的資源可用於所有可用的選擇。 大多數模塊使用記錄良好的GitHub存儲庫,並包含與最流行模塊組合的示例(請參閱大多數存儲庫中似乎存在的/examples/ dir)。

祝好運! (感謝Josh3736糾正我的錯誤。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM