使用Express部署Vue项目

在这里插入图片描述

使用Express部署Vue项目

目录

1. 背景

2. 配置Vue CLI

1.1 安装nodejs
1.2 创建vue-cli
1.3 创建vue项目
1.4 构建vue项目

3. 配置Express

2.1 安装express
2.2 创建项目

4. 使用express部署vue项目

1,背景
我们想要做一个前后端分离的课程项目,前端框架准备使用Vue.js,并使用Express作为Node.js中间件进行部署,后端使用Java Servlet与数据库交互。

但我在尝试根据网络上的一些教程将Vue.js构建好的项目部署到Express上时,发现页面总是显示不出来,HTML里的提示是

We're sorry but hello-world doesn't work properly without JavaScript enabled. Please enable it to continue.

所以我尝试在Vue CLI的官网寻找部署方案。发现官方推荐的部署在Express上的方案是使用connect-history-api-fallback中间件。于是我把具体的部署流程写成了这篇笔记,方便学习和记录。

2,配置Vue CLI

2.1. 安装Node.js
前往官网https://nodejs.org/en/download/进行下载,图形界面安装,按照提示进行即可

Mac OS也可以用brew安装

brew install node

2.2. 安装Vue CLI

npm install -g @vue/cli
# OR
yarn global add @vue/cli

查看是否安装成功
vue --version

2.3. 创建Vue项目

命令行进入一个你想安装的文件夹,运行以下命令

vue create hello-world

你会被提示选取一个 preset。你可以选默认的包含了基本的 Babel + ESLint 设置的 preset,也可以选“手动选择特性”来选取需要的特性。

在这里插入图片描述

这个默认的设置非常适合快速创建一个新项目的原型,而手动设置则提供了更多的选项,它们是面向生产的项目更加需要的。
在这里插入图片描述

运行项目

cd hello-world
npm run server

Figure 3. Npm run server

访问显示的url会出现Vue的欢迎界面
在这里插入图片描述

2.4. 构建Vue项目
通过Ctrl-C停止运行后,构建项目。打包好的文件会存放在dist文件夹下。

npm run build

但是dist文件夹下的index.html我们通过本地浏览器是打不开的,所以我们需要一个Node.js服务器,我使用的是Express。下面就进入Express的配置。

3. 配置Express
首先退出刚才创建的Vue项目文件夹
重新在别的地方选择一个文件夹进行
通过 npm init 命令为你的应用创建一个 package.json 文件。

npm init

此命令将要求你输入几个参数,例如此应用的名称和版本。 你可以直接按“回车”键接受大部分默认设置即可,下面这个除外:

entry point: (index.js)

键入 app.js 或者你所希望的名称,这是当前应用的入口文件。如果你希望采用默认的 index.js 文件名,只需按“回车”键即可。

npm install express --save

3.2. 创建项目
通过应用生成器工具 express-generator 可以快速创建一个应用的骨架。

npx express-generator

对于较老的 Node 版本,请通过 npm 将 Express 应用程序生成器安装到全局环境中并执行即可。

npm install -g express-generator

express安装时会提示文件夹非空,是否确定安装,输入y然后回车即可
在这里插入图片描述

npm install
npm start

然后在浏览器中打开 http://localhost:3000/ 网址就可以看到这个应用了。
在这里插入图片描述
4. 使用Express部署Vue项目
将Vue项目hello-world目录中的dist文件夹复制到 Express项目myapp文件夹。

直接复制过去也可以,通过下面的命令行复制也可以。

mkdir dist
cp -a ../hello-world/dist/ ./dist

复制完成后,myapp文件夹的目录树应该是这样的

xxx/myapp
├── app.js
├── bin
├── dist
├── node_modules
├── package-lock.json
├── package.json
├── public
├── routes
└── views

安装connect-history-api-fallback中间件

npm install --save connect-history-api-fallback

安装完成以后,修改app.js

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

// ----------------这两行被我们注释掉了-----------
// app.use('/', indexRouter);
// app.use('/users', usersRouter);
//---------------------------------------------

// ----------------这三行是我们新添加的-----------
var history = require('connect-history-api-fallback');
app.use(express.static(path.join(__dirname, 'dist')));
app.use(history());
//---------------------------------------------

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

在我标记的地方加入了下面3条语句,将中间件加入了其中。并且注释掉了前面的两条语句,让页面自动访问index.html。

// ----------------这两行被我们注释掉了-----------
// app.use('/', indexRouter);
// app.use('/users', usersRouter);
//---------------------------------------------

// ----------------这三行是我们新添加的-----------
var history = require('connect-history-api-fallback');
app.use(express.static(path.join(__dirname, 'dist')));
app.use(history());
//---------------------------------------------

启动Express

npm start

在浏览器中打开 http://localhost:3000/,看到Vue的界面就大功告成了。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要部署Vue项目,首先需要确保电脑上安装了Node.js和Vue CLI。如果没有安装,可以在官方网站下载和安装。 1. 打开命令行工具,进入Vue项目的根目录。 2. 执行命令`npm install`,将会安装项目所需的依赖项。等待安装完成。 3. 接下来,执行命令`npm run build`,这将会编译Vue项目并生成一个用于部署的静态文件夹(默认是"dist")。 4. 将生成的静态文件夹("dist"文件夹)复制到服务器上。可以使用FTP工具或其他方式进行文件传输。 5. 服务器端需要配置一些基本的设置,确保能够正确访问到Vue项目。比如,如果使用Apache服务器,可以添加一个虚拟主机配置,将指向Vue项目的请求导向静态文件夹。 6. 确保服务器上安装了Node.js环境,因为基于Vue项目通常需要Express等服务器端框架。 7. 在服务器上运行命令`npm install`,安装项目的依赖项。 8. 运行命令`npm run start`,以启动服务器。 9. 访问服务器的域名或IP地址,就可以在浏览器中看到部署好的Vue项目了。 需要注意的是,部署Vue项目可能还涉及到一些其他的细节,比如服务器端的一些配置项,开启gzip压缩,设置缓存等。具体的部署步骤和配置会因服务器环境而有所不同,可以根据情况进行调整。 ### 回答2: 要在Tongweb上部署Vue项目,我们可以按照以下步骤进行: 1. 首先,确保你已经安装了Node.js和npm(Node.js的包管理工具)。 2. 在本地开发环境中,使用Vue CLI创建一个新的Vue项目。你可以运行命令`vue create my-project`,然后按照向导选择所需的配置。 3. 完成项目创建后,进入项目目录,运行`npm run build`命令来构建Vue项目。这将生成一个dist目录,其中包含了打包好的静态文件。 4. 将dist目录下的文件复制到Tongweb的静态资源目录中(通常是public或者static目录)。你可以使用FTP、SCP或者其他文件传输工具进行文件复制。 5. 在Tongweb上配置反向代理,将对应的请求路由到Vue项目的静态资源。你可以编辑Tongweb的配置文件,添加类似下面的配置: ``` location / { proxy_pass http://localhost:8080; } ``` 这里假设Vue项目运行在本地的8080端口上,你可以根据实际情况进行修改。 6. 保存配置文件,并重启Tongweb服务器,使配置生效。 7. 现在,你可以通过Tongweb服务器的域名或者IP地址访问你的Vue项目了。 通过以上步骤,就可以在Tongweb上成功部署Vue项目了。记得要定期更新静态文件,以保持项目的最新状态。另外,根据具体的需求,你可能还需要配置Tongweb的其他功能,例如SSL证书、缓存等。 ### 回答3: 要部署tongweb的Vue项目,首先需要确保已经安装了Node.js和Vue CLI工具。接下来,可以按照以下步骤进行部署: 1. 在服务器上或者本地创建一个用于部署的文件夹,并在终端中导航到该文件夹。 2. 使用以下命令克隆Vue项目的代码库到当前文件夹中: ``` git clone [项目代码库的URL] ``` 3. 进入项目文件夹: ``` cd [项目文件夹名] ``` 4. 在终端中安装项目所需的依赖: ``` npm install ``` 5. 构建Vue项目: ``` npm run build ``` 这将生成一个用于部署的dist文件夹,其中包含了已打包好的静态文件。 6. 配置服务器。 - 如果使用的是Nginx服务器,可以在配置文件中设置根目录为Vue项目的dist文件夹,并将其绑定到指定的域名或IP地址上。 - 如果使用其他类型的服务器,需要将dist文件夹中的静态文件复制到服务器上的指定目录。 7. 启动服务器: - 如果使用的是Nginx服务器,需要启动Nginx服务使其生效。 - 如果使用其他类型的服务器,按照服务器的设置方式启动服务。 8. 尝试从浏览器中访问Vue项目的域名或IP地址,应该可以看到部署成功的Vue应用程序。 通过按照上述步骤进行操作,就可以成功部署tongweb的Vue项目。请注意,这只是一个基本的部署过程,具体步骤可能因实际情况而有所变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值