【前端知识】基于node的前端项目构建

前端多环境版本构建

    • 概述
      • 一、项目结构参数
      • 二、配置文件参数
      • 三、依赖管理参数
      • 四、构建工具参数
      • 五、其他参数
    • 多环境构建
      • 一、`--mode`参数的作用
      • 二、如何使用`--mode`参数
      • 三、注意事项
    • npm命令行详解
    • 相关文献

概述

前端项目构建参数涉及多个方面,包括项目结构、配置文件、依赖管理、构建工具等。以下是对前端项目构建参数的详细说明:

一、项目结构参数

  1. src:源代码目录,通常包含项目的所有前端代码,如JavaScript、CSS、HTML等。

    • assets:静态资源存放目录,如图片、字体、样式文件等。
    • components:公共组件存放目录,如按钮、输入框、表格等可复用的UI组件。
    • views:页面视图目录,存放不同页面的模板文件。
    • router:路由配置文件,定义前端页面的路由规则。
    • store:状态管理库(如Vuex)的配置文件,用于管理全局状态。
  2. public:公共文件目录,通常存放一些不需要经过构建处理的文件,如favicon.ico、robots.txt等。

  3. config:配置文件目录,通常包含一些与构建、开发相关的配置文件,如webpack.config.js、vue.config.js等。

二、配置文件参数

  1. package.json:项目的配置文件,包含项目的依赖信息、脚本命令等。

    • dependencies:项目所需的依赖包列表。
    • devDependencies:项目开发所需的依赖包列表,这些依赖包在生产环境中不需要。
    • scripts:自定义脚本命令,如启动开发服务器、构建生产环境代码等。
  2. vue.config.js(Vue CLI项目):Vue CLI的配置文件,用于自定义Vue项目的构建行为。

    • transpileDependencies:需要转译的依赖包列表。
    • devServer:开发服务器的配置选项,如端口号、代理设置等。
    • chainWebpack:通过链式操作自定义webpack配置。
  3. webpack.config.js(Webpack项目):Webpack的配置文件,用于定义项目的构建流程。

    • entry:项目的入口文件。
    • output:构建后文件的输出目录和文件名。
    • module:定义如何处理不同类型的文件,如JavaScript、CSS、图片等。
    • plugins:用于执行范围更广的任务的插件列表,如压缩代码、生成HTML文件等。

三、依赖管理参数

前端项目通常使用npm(Node Package Manager)或yarn作为依赖管理工具。这些工具允许你安装、更新和删除项目所需的依赖包。

  1. npm

    • install:安装依赖包。
    • update:更新依赖包到最新版本。
    • uninstall:删除依赖包。
  2. yarn

    • add:添加依赖包。
    • upgrade:更新依赖包到最新版本。
    • remove:删除依赖包。

四、构建工具参数

前端项目构建通常使用Webpack、Vite等构建工具。这些工具允许你自动化地打包、压缩和优化前端代码。

  1. Webpack

    • mode:构建模式,可以是"development"或"production"。
    • devtool:用于控制如何生成source map,以便在调试时能够定位到原始源代码。
    • optimization:用于定义代码分割、压缩等优化选项。
  2. Vite

    • root:项目根目录。
    • base:开发服务器的基础路径。
    • build:构建配置选项,如输出目录、压缩代码等。

五、其他参数

  1. 端口号:开发服务器监听的端口号,可以通过配置vue.config.js或webpack.config.js中的devServer选项来设置。
  2. 代理设置:当开发服务器和后端服务器不在同一个域名下时,可以通过配置代理来解决跨域问题。
  3. 环境变量:可以通过定义环境变量来区分开发环境、测试环境和生产环境,从而在构建时根据不同的环境执行不同的代码或配置。

多环境构建

总之,前端项目构建参数涉及多个方面,需要根据项目的具体需求和构建工具来选择合适的参数进行配置。在配置过程中,建议遵循“约定大于规范”的原则,以确保项目的可维护性和可扩展性。
在前端开发中,特别是使用Vue CLI等工具时,多环境包构建是一个常见的需求。--mode参数在这个过程中起到了关键作用,它允许开发者为不同的构
建环境指定不同的配置。以下是对前端多环境包构建中使用--mode的详细解释:

一、--mode参数的作用

--mode参数用于指定Vue CLI构建时的模式。不同的模式可以对应不同的环境变量和配置,从而实现多环境构建。例如,可以创建开发环境、测试环境和生产环境等不同的构建模式。

二、如何使用--mode参数

  1. package.json中配置脚本

    首先,需要在项目的package.json文件中为不同的构建环境配置脚本。例如:

    "scripts": {"serve:dev": "vue-cli-service serve --mode dev","serve:prod": "vue-cli-service serve --mode prod","build:dev": "vue-cli-service build --mode dev","build:prod": "vue-cli-service build --mode prod"
    }
    

    这样,就可以通过运行npm run serve:devnpm run serve:prodnpm run build:devnpm run build:prod等命令来启动或构建不同环境的项目。

  2. 创建环境配置文件

    接下来,需要在项目根目录下创建对应的环境配置文件。这些文件通常以.env.为前缀,后跟模式名称。例如,.env.dev用于开发环境,.env.prod用于生产环境。在这些文件中,可以定义不同的环境变量。例如:

    # .env.dev
    NODE_ENV='development'
    VUE_APP_API_URL='http://dev.api.example.com'# .env.prod
    NODE_ENV='production'
    VUE_APP_API_URL='http://prod.api.example.com'
    
  3. 在代码中使用环境变量

    在Vue项目的代码中,可以通过process.env来访问这些环境变量。例如,可以在main.js或组件中打印当前的环境变量:

    console.log(process.env.NODE_ENV);
    console.log(process.env.VUE_APP_API_URL);
    

三、注意事项

  1. 环境变量的命名

    在环境配置文件中,环境变量的命名需要遵循一定的规则。NODE_ENVBASE_URL是Vue CLI内置的环境变量,可以直接使用。自定义的环境变量需要以VUE_APP_为前缀,否则在构建过程中可能会被忽略。

  2. 环境变量的合并

    在构建过程中,Vue CLI会将.env文件和对应模式的环境配置文件(如.env.dev.env.prod)合并。如果两个文件中定义了相同的环境变量,则以模式环境配置文件中的值为准。

  3. 跨平台兼容性

    为了确保环境变量在不同操作系统上的兼容性,建议使用cross-env等工具来设置环境变量。这样可以避免在Windows和macOS等操作系统上因环境变量设置方式的不同而导致的问题。

综上所述,使用--mode参数可以方便地实现前端多环境包构建。通过配置package.json脚本、创建环境配置文件和在代码中使用环境变量等步骤,可以轻松地管理和切换不同的构建环境。

npm命令行详解

相关文献

【前端知识】Window下node安装以及配置
【前端知识】npm命令行详细说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/34963.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

docker学习笔记(四)--DockerFile

文章目录 一、什么是Dockerfile二、docker build命令三、dockerfile指令3.1 FROM3.2 ENV3.3 WORKDIR3.4 RUN3.5 CMD3.6 ENTRYPOINT3.7 EXPOSE3.8 ARG3.9 ADD3.10 COPY3.11 VOLUME 四、dockerfile示例 一、什么是Dockerfile Dockerfile 是用于构建 Docker 镜像的脚本文件&#…

撰写技术文档的关键步骤和核心要点

编写项目的技术文档是一个重要且细致的任务,它不仅有助于项目的当前开发团队理解系统的结构和工作原理,还为未来的维护和扩展提供了宝贵的参考资料。以下是撰写技术文档时应遵循的几个关键步骤和组成部分: 1. 概述 项目简介:简要…

Ant-Design-Vue 全屏下拉日期框无法显示,能显示后小屏又位置错乱

问题1&#xff1a;在全屏后 日期选择器的下拉框无法显示。 解决&#xff1a;在Ant-Design-Vue的文档中&#xff0c;很多含下拉框的组件都有一个属性 getPopupContainer可以用来指定弹出层的挂载节点。 在该组件上加上 getPopupContainer 属性,给挂载到最外层盒子上。 <temp…

【前端学习路线】(超详细版本)

先附上学习路线图&#xff1a;前端学习路线 第一阶段&#xff1a;前端入门&#xff08;htmlcss&#xff09; 前端最基本的知识&#xff0c;需要先将这些内容融汇贯通&#xff0c;学习后面内容才会不吃力。学习完可以做几个静态页练习一下。 推荐视频学习链接&#xff1a; 黑马程…

Vue生成类似于打卡页面

数据表格 <el-table :data"tableData" border height"calc(100vh - 240px)" :cell-style"cellFun"><el-table-column label"姓名" show-overflow-tooltip prop"name" align"center"/><el-table-co…

JVM学习《垃圾回收算法和垃圾回收器》

目录 1.垃圾回收算法 1.1 标记-清除算法 1.2 复制算法 1.3 标记-整理算法 1.4 分代收集算法 2.垃圾回收器 2.1 熟悉一下垃圾回收的一些名词 2.2 垃圾回收器有哪些&#xff1f; 2.3 Serial收集器 2.4 Parallel Scavenge收集器 2.5 ParNew收集器 2.6 CMS收集器 1.垃圾…

波特图方法

在电路设计中&#xff0c;波特图为最常用的稳定性余量判断方法&#xff0c;波特图的根源是如何来的&#xff0c;却鲜有人知。 本章节串联了奈奎斯特和波特图的渊源&#xff0c;给出了其对应关系和波特图相应的稳定性余量。 理论贯通&#xff0c;不在于精确绘…

【Java】2、集合框架 JCF

目录 CollectionListArrayList扩容机制System.arraycopy() 和 Arrays.copyOf()方法 LinkedList Set MapHashMap *重点&#xff1a; 底层机制&#xff08;源码&#xff09;应用场景 好处&#xff1a; 数组&#xff08;长度不可改&#xff0c;同一类型&#xff0c;增删不便&#…

P5461 赦免战俘

P5461 赦免战俘 #include <iostream> using namespace std; #include <algorithm> #include <vector> #include <cmath> void pardon(auto & matrix,int x,int y,int size){if(size 1) return;int half size / 2;for(int i x;i < x half;i …

GoTrackIt应用指南:共享单车时空轨迹可视化

GoTrackIt平台集成了对 Kepler.gl 可视化工具的部分功能进行了封装&#xff0c;通过引入 KeplerVis 类&#xff0c;显著简化了地理空间数据分析与展示的过程。利用这一类&#xff0c;开发者和数据分析师能够在网页端快速实现复杂地理数据的动态可视化&#xff0c;而无需深入掌握…

LeetCode 力扣 热题 100道(十五)搜索插入位置(C++)

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 代码如下所示&#xff1a; class Solution { public:int searchIns…

JS中递归函数的理解及展开运算符在递归种的运用理解

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>递归函数</title> </head> <body> <script>const list ["你好", "吃饭了吗",["好",[[&qu…

vue中.sync修饰符的用法

一、什么是.sync修饰符 在Vue.js中&#xff0c;.sync 修饰符用于创建一个双向绑定的 prop。它使子组件能够更新父组件的 prop 值&#xff0c;实现父子组件之间的双向数据同步。具体来说&#xff0c;.sync 修饰符主要有以下几个功能&#xff1a; 简化双向绑定&#xff1a; 使用…

element Plus中 el-table表头宽度自适应,不换行

在工作中&#xff0c;使用el-table表格进行开发后&#xff0c;遇到了小屏幕显示器上显示表头文字会出现换行展示&#xff0c;比较影响美观&#xff0c;因此需要让表头的宽度变为不换行&#xff0c;且由内容自动撑开。 以下是作为工作记录&#xff0c;用于demo演示教程 先贴个…

rockit 学习、开发笔记(五)(VDEC)

前言 后面由于业务需求有rockit编解码的功能开发&#xff0c;这里我是第一次接触编解码&#xff0c;所以后续有些概念表述可能不太清楚&#xff0c;请各位多多包涵。 先来说一下解码模块的使用&#xff0c;rockit中的解码模块是VDEC&#xff0c;如果想要开发rockit的vdec可能…

unicloud微信小程序云端一体项目DEMO

最近应客户需求&#xff0c;做了一个产品展示的云开发小程序&#xff0c;从了解云开发到应用到实际项目的产品demo&#xff0c;希望大家能从中获取到对自己有用的东西。 说下心得体会吧&#xff0c;一般小项目用这种云开发确实会减少很多开发成本&#xff0c;人力成本&#xf…

图的创建和基础操作(数据结构实验作业)

上面是我的实验作业要求&#xff1a;&#xff08;看不到的同学&#xff0c;移步&#xff1a;https://gitee.com/young-lion/picture-bed/raw/master/202412051939715.png&#xff09; 下面的代码使用的是go语言&#xff1a; package mainimport ("fmt" )// 访问标记…

flex布局容易忽略的角色作用

目录 清除浮动 作用于行内元素 flex-basis宽度 案例一&#xff1a; 案例二&#xff1a; 案例三&#xff1a; flex-grow设置权重 案例一&#xff1a; 案例二&#xff1a; 简写flex-grow:1 0 auto; flex作为一维布局,行和列的使用&#xff0c;忽略的小角色&#xff0c;大…

javascript-svg-在圆环上拖动并选中区域

目录 问题描述解决思路代码结构 问题描述 假设我某个页面上使用了<svg>&#xff0c;其中包括一个<circle>。我希望实现的是&#xff1a;在circle上点击某个位置后&#xff0c;拖动&#xff0c;出现圆弧状阴影。实现效果为&#xff1a; 解决思路 要实现这个效果…

Android 使用 Canvas 和 Paint 实现圆形图片

学习笔记 效果展示: 全部代码: public class YuanActivity extends AppCompatActivity {private ActivityYuanBinding binding;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 通过 DataBinding 获取布局文件binding …