vue项目启动命令个人笔记

这篇具有很好参考价值的文章主要介绍了vue项目启动命令个人笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

最近在看vue框架,发现启动命令逻辑比较复杂,在这里总结一波。

注意,下面的总结以本人的项目为例,不同项目可能细节不同,仅供参考。

二、启动命令详解

1.项目启动前,需要先装好nodejs,并用npm install安装好依赖。

2.本人的项目中,vue启动命令为:

npm run compile

其中,npm run xxx会执行package.json中配置的命令,例如package.json中,有:

  "scripts": {
    "compile": "cross-env SERVER_ENV=test node build/dev-server.js",
  },

所以实际执行的会是cross-env SERVER_ENV=test node build/dev-server.js命令。

3.cross-env命令,作用是实现跨平台配置环境变量,SERVER_ENV=test就是自己配置的一个环境变量,后续js等文件会用到。
(就是windows和linux都可以用 cross-env key=value 来配置环境变量的意思)

4.node命令,可以执行js文件,所以node build/dev-server.js实际执行的就是项目根目录/build/dev-server.js文件。
(因为是在项目根目录执行的npm run compile命令,所以build/dev-server.js就是从项目根目录开始的;其中dev-server.js是自己编写的一个js文件)

5.dev-server.js文件中,有:

//这个会打印test,上面配置的环境变量
console.log("env1",process.env.SERVER_ENV)
//这个会打印prod,因为没有配置ENV1
console.log("env2",`"${process.env.SERVER_ENV1 || 'prod'}"`)
//这个会打印test,上面配置的环境变量
console.log("env3",`"${process.env.SERVER_ENV || 'prod'}"`)

const config = require('../config')
//这个打印内容
console.log("config",config)

这个的意思是,声明一个变量config,内容是当前js文件的、上一个目录中的、config文件夹中的index.js文件。(自己编写的index.js文件)
注意,只读取文件夹下的index.js文件,不读取其它js文件。

6.config/index.js文件中,有:

//这个是读取node_modules的path依赖,解析路径用的(类似jar包)
const path = require('path')

//这个是读取同级目录下的test.js文件
const testEnv = require('./test')

module.exports = {
  test: {
    env: testEnv,
    port: 10001,
    assetsSubDirectory: 'static',
    assetsPublicPath: process.env.SERVER_ENV === 'test' ? '/sub-path-test/' : '/sub-path/',
    proxyTable: {
      api: {
        filter: '/sub-path-test/**',
        changeOrigin: true,
        target,
        onProxyReq(proxyReq) {
          proxyReq.setHeader(
            'Cookie', `SESSION=6b7c231d-1133-40cf-c566-332f6dtxfa72`
          )
        },
      },
    },
  },
}

这个文件中,因为有module.exports,所以第5步中可以require到。
这个文件中,有个变量testEnv,配置到了module.exports的json串中,它的值下面会写。

7.config/test.js文件中,有:

//这个也是node_modules里的依赖方法,用来合并成json用
const merge = require('webpack-merge');

//这个读取的是同级目录下的prod.js文件
const prodEnv = require('./prod');

//这个把json合并了下,然后exports了
module.exports = merge(prodEnv, {
  TEST_ENV: '"test_env"',
});

8.config/prod.js文件中,有:

module.exports = {
  PROD_ENV: '"prod_env"',
};

9.现在,回到dev-server.js文件(第5步),其中的config变量的内容为:

config {
  test: {
    env: { TEST_ENV: '"test_env"', PROD_ENV: '"prod_env"' },
    port: 10001,
    assetsSubDirectory: 'static',
    assetsPublicPath: '/sub-path-test/',
    proxyTable: { api: [Object] }
  }
}

10.dev-server.js文件中,主要有以下代码:

//node_modules里的依赖,框架方法
const express = require('express')
//执行这个方法,获得返回值
const app = express()



//node_modules里的依赖,解析路径用
const path = require('path')
//从config对象(json)里获取到子路径相关
//posix是一种平台兼容写法,与join相同,也是把路径拼接起来
//staticPath="/sub-path-test/static"
const staticPath = path.posix.join(
  config.test.assetsPublicPath,
  config.test.assetsSubDirectory
)
//配置虚拟子路径、以及静态资源目录
//意思是,访问/sub-path-test/static时,访问的类似是当前目录(一般是dist目录)下的static文件夹中的内容
//例如,http://localhost:10001/sub-path-test/static/a.png,访问的就是static文件夹里的a.png
app.use(staticPath, express.static('./static'))



//启动项目,设置启动后的端口,10001
const port = config.test.port
module.exports = app.listen(port, err => {
  if (err) {
    console.log(err)
  }
})

这段代码的意思是,使用了express框架,设置了一个虚拟访问路径与静态资源目录,设置了一个项目启动端口。
例如,访问http://localhost:10001/sub-path-test/static/a.png,访问的类似是static文件夹里的a.png
注意,项目打包后,在dist文件夹中、会生成a.png;
不过,只启动项目的话,并不会打包、dist文件夹是空的,不过也能访问到,是框架实现的。

11.dev-server.js文件中,还用到了:

//node_modules依赖方法
const webpack = require('webpack')
//自己配置的一个js文件
const webpackConfig = require('./webpack.dev.conf')
//调用了下webpack方法
const compiler = webpack(webpackConfig)
//获得了个变量devMiddleware
const devMiddleware = require('webpack-dev-middleware')(compiler, {
  //总之,这个的值也是 config.test.assetsPublicPath,就是"/sub-path-test/"
  publicPath: webpackConfig.output.publicPath,
  noInfo: false,
  quiet: false,
  stats: {
    colors: true,
  },
})

//给app设置了下
app.use(devMiddleware)

这段还没有全看明白,总之就是设置了个publicPath,也是/sub-path-test,感觉类似express.static那里。
实现的效果是,当访问http://localhost:10001/sub-path-test/user/user-detail.html时,访问的实际上类似是.../dist/user/user-detail.html。(是/user/user-detail/app.vue等文件最后生成的user.html文件,如果打包的话就能看到了。)

注意,只启动项目的话,并不会打包、dist文件夹是空的,不过也能访问到,是框架实现的。

12.可以根据环境变量不同、配置不同的虚拟访问路径(例如测试用sub-path-test、生产用sub-path);
然后就可以在nginx中、根据某些变量不同、访问不同的路径、就是访问不同的环境(例如某些人的账号访问测试、某些人的账号访问准生产等,用来自测);
然后可以在公共js方法中,做一些判断,如果是测试url、或者如果环境变量是test、就在发送请求方法处增加setHeader('Cookie','asd-adf-ad-123-adf')等方法,用来自测。

三、总结

1.上方的启动命令与相关文件,是根据本人的项目总结的,仅供参考,不同项目细节可能不同。

2.项目启动命令可以自己配置,过程如上,需要熟悉node_modules中的一些依赖方法。(本人新学,好多都不熟悉,无从入手,只能先看,总结一波自己理解的)

3.可以配置本地vue项目启动时、端口号与访问前缀路径;
需要注意的是,项目打包部署到服务器上后又会有所区别,服务器上主要是在nginx中配置访问端口与前缀路径的,而不是在vue项目中。文章来源地址https://www.toymoban.com/news/detail-787792.html

到了这里,关于vue项目启动命令个人笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端项目部署自动检测更新后通知用户刷新页面(前端实现,技术框架vue、js、webpack)——方案二:轮询去判断服务端的index.html是否跟当前的index.html的脚本hash值一样

    当我们重新部署前端项目的时候,如果用户一直停留在页面上并未刷新使用,会存在功能使用差异性的问题,因此,当前端部署项目后,需要提醒用户有去重新加载页面。 vue、js、webpack 根据打完包之后生成的 script src 的hash值去判断 ,每次打包都会生成唯一的hash值,只要轮

    2024年01月23日
    浏览(44)
  • 前端开发 5: Vue.js 框架

    在前端开发中,Vue.js 是一个流行且灵活的 JavaScript 框架,用于构建用户界面。它采用了组件化的开发方式,使得前端开发更加模块化和可维护。在本篇博客中,我将为你介绍 Vue.js 的基础知识和常用技巧,帮助你更好地掌握前端开发中的框架部分。 Vue.js 是一个轻量级的 Jav

    2024年01月19日
    浏览(45)
  • vue.js前端框架应用案例

    Vue.js 是一种流行的前端框架,它可以帮助开发者构建单页应用(SPA)和复杂的用户界面。以下是几个 Vue.js 的案例,涵盖了不同领域的应用: Vue.js 官方文档 :Vue.js 的官方文档本身就是一个使用 Vue.js 构建的项目。它展示了 Vue.js 的各种功能和最佳实践,包括组件、指令、混

    2024年02月21日
    浏览(50)
  • 前端主流框架:项目运行命令 npm 详解

            作为一位资深前端开发,我对npm(Node Package Manager)的使用有着深入的了解。npm是Node.js的包管理器,用于安装、管理和删除各种前端库和工具。现在,让我们深入了解npm在Vue、React、Angular和Vue 3项目中的一些基本使用方法和配置。 npm提供了一系列命令,用于管理项

    2024年02月19日
    浏览(39)
  • 常见的web前端开发框架:Vue.js

            常见的Web前端开发框架包括Bootstrap、Vue.js、React.js、Angular.js等。每个框架都有其独特的特点和优势,开发者可以根据项目的需求和个人的喜好来选择合适的框架。同时,随着技术的不断发展,新的框架和工具也会不断涌现,为Web前端开发带来更多的选择和可能性。

    2024年02月20日
    浏览(49)
  • 【热门前端【vue框架】】——vue框架和node.js的下载和安装保姆式教程

    👨‍💻个人主页 :@程序员-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏 :vue框架开发   Vue.js 是一款流行的 JavaScript 前端框架,它以其简单、灵活和高效的特性,成为了构建现代化 Web 应用程序的首选工具

    2024年04月27日
    浏览(56)
  • 前端框架之争:Vue.js vs. React.js vs. Angular

    🎉欢迎来到Web前端专栏~前端框架之争:Vue.js vs. React.js vs. Angular ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:架构设计 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平有限,如果

    2024年02月07日
    浏览(93)
  • 如何使用前端框架(React、Angular、Vue.js等)?该如何选择?

    聚沙成塔·每天进步一点点 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而

    2024年02月07日
    浏览(60)
  • Vue项目启动过程全记录(node.js运行环境搭建)

    1、安装node.js 从Node.js官网下载安装包并安装。然后在安装后的目录(如果是下载的压缩文件,则是解压缩的目录)下新建node_global和node_cache这两个文件夹。 node_global:npm全局安装位置 node_cache:npm缓存路径 2、配置环境变量 在系统变量里添加一个变量NODE_HOME,值为node.js的安装

    2024年02月19日
    浏览(47)
  • ruoyi启动前端报错‘vue-cli-service‘ 不是内部或外部命令

    解决方案: 在新项目的pack.json的文件目录,执行命令npm install 或者 cnpm install 如果报npm 不是内部命令,需要在系统配置全局的变量 在使用npm的时候,或者是通过npm下载了一些包,使用这些包的时候,有时候会遇到“npm 不是内部或外部命令”,或者“XXX 不是内部或外部命令

    2024年02月05日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包