【问题标题】:Can I include this JavaScript/NodeJS/express app in my website?我可以在我的网站中包含这个 JavaScript/NodeJS/express 应用程序吗?
【发布时间】:2020-08-21 12:17:47
【问题描述】:

我遵循了一个关于如何使用 NodeJS、express、MongoDB 作为数据库和 EJS 为网站制作注册和登录功能的教程。我包含了一个简单的 HTML 文件,我希望在其中有一个指向注册页面的 href。我包含的 JavaScript 在端口:5000 或此:(process.env.PORT)变量上运行服务器。 基本上我的问题是如何在我的网站上包含此注册和登录功能。

顺便说一句,包含的 HTML 文件不是我的实际网站,而只是一个简单的示例,而且我包含的 JavaScript 并不是注册/登录应用程序的全部内容。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    click on register below to go to the register page<br>
    <a href="">register</a>
</body>
</html>

const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const mongoose = require('mongoose');
const flash = require('connect-flash');
const session = require('express-session');
const passport = require('passport');
const http = require('http');

const app = express();

// Passport config
require('./config/passport')(passport);

// DB Config
const db = require('./config/keys').MongoURI;

// Connect to Mongo
mongoose.connect(db, { useNewUrlParser: true})
    .then(() => console.log('MongoDB Connected...'))
    .catch(err => console.log(err));

// EJS
app.use(expressLayouts);
app.set('view engine', 'ejs');

// Bodyparser
app.use(express.urlencoded({ extended: false}));

// Express Session
app.use(session({
    secret: 'secret',
    resave: true,
    saveUninitialized: true,
}));

// Passport middleware
app.use(passport.initialize());
app.use(passport.session());

// Connect Flash
app.use(flash());

// Global variables
app.use((req, res, next) => {
    res.locals.success_msg = req.flash('succes_msg');
    res.locals.error_msg = req.flash('error_msg');
    res.locals.error = req.flash('error');
    next();
});

// Routes
app.use('/', require('./routes/index'));
app.use('/users', require('./routes/users'));

const PORT = process.env.PORT || 5000;

app.listen(PORT, () => console.log(`Service started on port ${PORT}`));

【问题讨论】:

  • 您是否有一个现有的 php 内置网站,并且您想在同一台服务器上部署 node js 应用程序?
  • 查看快速路由。它显示了如何设置路由以根据路径显示不同的页面。您可以使用 AJAX 或表单提交将数据发送到路由并在路由返回 HTML/内容之前进行处理。 expressjs.com/en/guide/routing.html
  • 如果您正在学习教程,那么它很可能包含您需要的所有信息。您显示的HTML 代码将由Express 服务器本身使用EJS 呈现。所以你需要弄清楚如何使用EJS 来完成你所需要的。
  • @HelloWorld 我有一个网站,我将它部署在 netlify 上,这是我的网站:physics-explained.netlify.app我目前网站上没有任何 php 和 nodejs。
  • @goto1 该应用程序在本地主机中完美运行,我似乎无法弄清楚如何从本地主机获取它到我的网站文件。例如,我想在我的 index.html 页面上添加注册/登录。我已经使用 netlify 部署了一个网站。

标签: javascript html node.js express


【解决方案1】:

Node 是一种服务器端技术,因此您不能包含它,例如作为脚本文件。托管服务器端应用程序的选项是Heroku

此外,使用情况在一定程度上取决于它是无头 API 还是传统的 Web 应用程序。

【讨论】:

  • 我不太明白,我已经部署了我的网站(使用 netlify),它托管在服务器上。我不能使用引用注册页面的简单 将应用程序添加到网站吗?
  • Node.js 应用与基于静态文件的静态网站不同。 Node 应用程序作为提供网页的单独应用程序或进程运行。据我所知,这不能在 Netlify 中完成。我的 Node 应用程序在 Amazon 虚拟专用服务器上运行。
  • @goto1 我已经在 heroku 上创建了应用程序,现在我有一个工作链接,人们可以在其中注册和登录。那么我现在是否只是在我现有的网站上链接该页面?还是我又错过了什么明显的东西?
  • @goto1 或者我应该从现在开始在 heroku 上托管我的网站并删除我的 netlify 应用程序?
  • 您可能应该在 Netlify 应用程序上实现一些检查用户是否登录的东西。除此之外,您可以选择任何您想做的事情。
【解决方案2】:

为了将 nodejs 应用程序部署到运行 PHP 的现有 Web 服务器,一个好方法是您可以创建一个子域并在服务器上托管 nodejs 应用程序,然后将登录和注册功能重定向到该子域。

https://www.namecheap.com/support/knowledgebase/article.aspx/10202/48/how-to-install-nodejs-on-a-vps-or-a-dedicated-server

上面的链接有一个很好的教程,说明如何将 nodejs 服务器托管到现有的 cpanel 网站。

【讨论】:

    【解决方案3】:

    我在 heroku 上托管了应用程序(现在是我的整个网站),因为 netlify(我之前使用的网站主机)不支持 nodeJS。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 2016-09-13
      • 2012-03-22
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多