使用Node.js制作没有框架的网站

时间:2018-01-05 21:02:05

标签: node.js frameworks

我想创建一个基于节点js和mysql的网站,但是我已经读到有一个名为express的框架用于节点js,我想知道我是否必须使用这种类型的创建一个像样的网站的框架,或者没有它可以使用纯粹的节点js。

3 个答案:

答案 0 :(得分:6)

不需要框架。您可以仅使用http模块编写完整的Web服务器,或者如果您真的想自己编写所有内容,您甚至可以仅使用net模块进行编写。

但是,不使用经过测试的完整代码可以让您的生活更轻松的唯一原因是,如果您正在寻求纯粹的学习体验,并且不要介意您的开发需要更长的时间并且会有错误并且可能会表现得更糟,并且与已经编写的数万个模块不兼容,以解决问题,并且将缺少功能。

因此,除了学习经验之外,我知道没有理由不使用像Express或KOA这样的简单Web服务器框架。它已经过测试过的代码可以让您的开发更快。并且,Express是公平的,没有见解的#34;这意味着它不会强迫您使用特定的方法。它只是为您提供了更简单的方法来完成您已经为自己编写代码所需要的东西。

以这种方式看待它。当你得到node.js时,有成千上万的API提供了许多已经测试过的东西,比如TCP库,文件I / O库等......这些都是框架(在某种意义上)。你也不必使用它们。您可以从头开始重写您需要的任何功能。但是,你甚至不会考虑这样做,因为测试代码已经存在,可以解决你的问题。所以,你建立在已经完成的事情之上。

并且,以下是使用Express的更多理由。使用Express不仅使您的Web服务器的开发更容易,更简单,更快速,而且还打开了在NPM上使用数万个预构建的开源模块来解决常见问题的大门。这是一个例子。假设您要为您的网站实施登录,并且您希望允许用户使用Google或Facebook登录作为您网站的登录信息。如果您使用Express,那么只需几行代码即可将预先构建的模块插入Express,并允许您立即支持。

使用node.js进行编码的一大优势是可以访问NPM上已经解决了许多人遇到的问题的数万个预构建模块。在node.js中编码,你将永远不会使用来自NPM的任何外部模块的思维模式,这会丢弃使用node.js编码的最大优势之一。

  

你能告诉我框​​架中使用的路由是什么吗?

路由是您希望Web服务器响应的URL。因此,如果您希望http://myserver.com/categories成为服务器响应的URL,则为/categories创建路由,以便您可以编写代码,以便在请求该URL时发生什么。像Express这样的框架允许您使用一个语句非常简单地创建该路由,例如:

app.get('/categories', function(req, res) {
    // put code here to handle that request
});

这只是Express支持的冰山一角。它允许您在路由定义中使用通配符,识别URL中的参数,创建在许多路径上准备工作的中间件(例如检查用户是否已登录)等等。

答案 1 :(得分:1)

您不必使用框架,但建议使用其中一个框架,因为像Express这样的框架可以在很多方面让您的生活更轻松。检查一下:What is Express.js?

答案 2 :(得分:0)

是的,您可以编写基于Node.js的后端,而无需任何后端实现框架(如Express)。而且,如果您是第一次使用Node.js,而没有任何以前的异步编码经验,那么建议您不要对您的简单学习者应用程序使用Express,KOA或其他Node实施框架(例如,需要注册/登录表单处理之类的应用程序) ,注销按钮,用户首选项更新到数据库等),因为:

(1)Node.js是JavaScript后端的核心技能

服务器任务分配和餐厅服务员之间的愚蠢类比对真正的Web工程师毫无用处。您必须首先知道节点在服务器CPU中可以做什么/不能做什么,这完全不同于其他大多数后端技术。然后,您必须查看如何 Node进程实际上是如何做到的。使用Express / KOA / Hapi / etc,有时可以有效地消除Node后端所带来的精神挑战。节省任何时间都以对Node是什么以及Node的实际运行方式有适当的理解为代价。

(2)学习Node.js及其异步编码已足够困难,而无需使用诸如Express / KOA之类的未知框架(使用户熟悉回调函数和Promises等JavaScript结构)增加编码的复杂性。最好总是单独学习一些东西,以便获得其个别效果的本质,而不是与其他包/框架一起使用时的整体效果。如此多的Node.js Express教程相当于通过观看Momma学习做蛋糕的软件。我们可以复制它,但我们不知道它如何工作或为什么起作用。专业的编码人员不能只是好的模仿者。

(3)使用Express的可用学习教程通常会拖入其他技术,例如MongoDB,Mongoose,Mustache,Handlebars等,这会使学习Node.js更加尴尬。

(4)使用Node.js,自定义JS和从npm存储库导入的现有JS模块而不是Express可以更有效地编写基本的Web应用程序。

(5)一旦清楚地理解了异步编码和可用于辅助它的JavaScript结构,用于基本任务的纯Node.js应用就不那么困难了。

(5)之后,您确实掌握了Node.js的知识,并可以使用服务器端JavaScript构造使基本的Web应用程序功能正常运行,然后可以明智地开始探索Express / Hapi / KOA / etc,并查看在执行需要大量功能的大型项目时,实现框架可以为您的工作流程做什么。至此,您知道Express代码应该执行的操作以及为什么要按原样执行。

在过去十年中,Node.js已成为大多数中小型Web应用程序选择的后端技术。这也是JavaScript语言从单纯的前端脚本工具(具有有限的Java-aping结构集)发展到如今的创新和全面语言的主要原因。它也是当今使用最流行的语言。花时间来理解Node服务器框架以及在Node中使用的最新JavaScript结构是花费时间。当在Node.js平台上编写更复杂的后端时,诸如Express,KOA,Hapi,Sails等实现框架会带来巨大的好处。但是所有这些实现框架都基于Node.js的行为模式。因此,除非首先了解Node本身,否则将永远无法享受Express / KOA / Sails / etc的完整实用程序。

尝试使用here获得纯Node.js。