如何在Node.js上构建网站?

27

我在几年的PHP编程后刚开始接触Node.js,我想为我的下一个项目构建一个Node.js应用程序,但我不知道如何做到。

是否有任何关于Node.js入门的资源?

提前致谢!

6个回答

32
你应该把Node.js看作是一种类似于Apache + PHP的东西,这意味着你可以使用Node编程你的网站和Web服务器。
Node与基本的PHP有一些重要的区别,它是事件驱动、异步、非阻塞的。你需要学习如何处理回调函数,不要阻塞事件循环等其他方面的知识。
你应该尝试从Node的基础知识入手学习,以下是一些很好的资源:https://stackoverflow.com/tags/node.js/info(我最喜欢的是nodetuts.com和作者出版的优秀书籍《Hands on Node》)。
在学习了基础知识之后,你可能会发现Express作为一个Web框架非常有用,而Socket.IO则适用于实时应用程序。

7

我认为您正在寻找一个node.js的启动指南,以使用node构建一些有意义的网页。看看express,这是一个node web框架。他们提供了一个不错但简短的教程(在指南下)。


5

您需要在Web服务器上运行Node.js。基本上,您需要一台VPS或专用服务器,您可以完全控制它。 PHP通过标准的Web服务器Apache运行,而Node.js本身就是Web服务器。

或者您可以寻找一个提供Node.js主机服务的 托管平台来为您完成这件事。


我知道这是一个旧帖子,但是在我的大学电脑上运行node.js服务器是否可能? - masfenix
1
Node.js主机的链接已经失效,请更新您的答案。 - Dennis Wanyonyi

1

Node.js 本质上是您的 Web 服务器,可以代替 Apache。因此,运行 Node.js 的唯一托管方式是专用服务器或云实例,在其中您需要安装并运行 Node.js。您在其中运行 Node.js 的机器需要有一个指向它的域名,否则您可以通过其 IP 地址访问服务器,这种情况下是本地主机。


1
另一个选择是使用类似 Knockout.js 的东西(http://knockoutjs.com/),并让页面对 Node.js 服务器进行 JSONP 调用。由于服务器上的 JavaScript 是通过 Node 发送 JSON 给客户端非常容易,因此在客户端使用框架可以轻松创建基于该 JSON 数据的动态页面。
缺点是旧浏览器没有优雅的降级方式。优点是可能会拥有一个潜在的快速网站,从一开始就内置有很棒的 AJAX 功能。
以下是使用 Node 生成 JSONP 响应的示例代码:
function writeJsonpResponse(res, jsonpcallback, obj) {
    var serialized = JSON.stringify(obj);

    res.writeHead(200, {'Content-Type': 'application/javascript'});
    res.write(jsonpcallback + '(' + serialized + ');');
    res.end();
}

0
阅读README。 设置环境。 查看package.json(或npm init创建一个) 安装依赖项(npm install / axios,nodemon,express,mysql,react,babel) 添加脚本以启动服务器和webpack(如果需要) 熟悉文件结构。 关注公共/ dist、服务器、数据库、客户端的关注点分离 考虑数据流程 确保基本的HTML结构。 检查bundle.js文件/它所需的所有内容是否已加载 需要一个div id来呈现react(如app或root) 启动Express服务器。 在单独的终端上启动服务器和webpack。 检查console.log以确保服务器正在监听! 编写服务器路由(get和post请求)。 使用Postman检查get和post请求是否正常工作! 创建MySQL数据库(db/index.js)。 设计并导入模式(如何结构化数据表)。 导入模式时,请确保您在导入yr模式女孩时处于db文件夹中! 将数据库连接到服务器。 检查console.log以确保连接成功! 编写插入/检索数据库查询函数。 不要忘记将这些查询module.exports到服务器! 将在服务器中调用查询函数/获取和发布请求 设置基本的React结构。 index.js的唯一任务是将您的应用程序组件呈现到div id app 需要一个有状态的App组件来呈现所有其他组件 记得导入和导出默认值! 设计其余的组件,决定它们是否为功能性(无状态)或类组件(有状态)。 画出来! 需要传递哪些道具(数据和函数)? 编写这些组件。 通过所有部分执行的一个数据流。让您的输入处理程序向客户端发送POST请求(使用axios)到服务器路由,该路由将执行您的API调用(如果有),然后将该数据插入数据库中。 记得处理错误! 处理事件/条件呈现。 1.用户事件提供输入(onChange e.target.value) 2.编写handleChange f(x)以将状态更新为新输入 3.提交输入(onClick) 3.编写handleSubmit f(x),该函数接受更新后的状态并使用{input}向适当的服务器路由进行axios POST请求 记得适当绑定方法函数! 在路由/获取和发布请求中调用查询函数。 检查来自客户端的数据是否存储在数据库中。 描述那些表格我的朋友! 在客户端上进行AJAX get请求(使用axios或fetch)。 将传入的数据存储在setState中 可能希望在componentDidMount中进行GET请求,以始终为客户端呈现适当的信息 耶!您已成功设置了服务器、数据库和客户端,之间传递数据,可能操作了数据,存储了该数据,并向客户端显示了适当的数据! 解决这些用户故事!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接