手把手教你构建一个web前端项目,全网最详细教程!

2023-11-10

1. 选择现成的项目模板还是自己搭建项目骨架

搭建一个前端项目的方式有两种:选择现成的项目模板、自己搭建项目骨架。

选择一个现成项目模板是搭建一个项目最快的方式,模板已经把基本的骨架都搭建好了,你只需要向里面填充具体的业务代码,就可以通过内置的工具与命令构建代码、部署到服务器等。

一般来说,一个现成的项目模板会预定义一定的目录结构、书写方式,在编写项目代码时需要遵循相应的规范;也会内置必要的工具,比如 .editorconfigeslintstylelintprettierhuskylint-staged 等;也会内置必要的命令(package.json | scripts),比如 本地开发:npm run dev本地预览:npm run start构建:npm run build部署:npm run deploy 等。

github上比较好的项目模板:

这些模板的使用又分为两种:使用 git 直接克隆到本地、使用命令行创建。

(使用现有模板构建的项目,可以跳过第 2 ~ 7 步)

1.1 使用 git 直接克隆到本地

这是一种真正意义上的模板,可以直接到模板项目的 github 主页,就能看到整个骨架,比如 react-boilerplateant-design-provue-element-adminreact-starter-kit

以 react-boilerplate 为例:

克隆到本地:

git clone --depth=1 https://github.com/react-boilerplate/react-boilerplate.git  <你的项目名字>

复制代码

切换到目录下:

cd <span class="hljs-tag">&lt;<span class="hljs-name">你的项目名字</span>&gt;</span>

复制代码

一般来说,接下来运行 npm run install 安装项目的依赖后,就可以运行;有些模板可能有内置的初始化命令,比如 react-boilerplate:

npm run setup

复制代码

启动应用:

npm start

复制代码

这时,就可以在浏览器中预览应用了。

1.2 使用命令行创建

这种方式需要安装相应的命令,然后由命令来创建项目。

以 create-react-app 为例:

安装命令:

npm install -g create-react-app
复制代码

创建项目:


create-react-app my-app
复制代码

运行应用:

cd my-app
npm start

复制代码

1.3 自己搭建项目骨架

如果你需要定制化,可以选择自己搭建项目的骨架,但这需要开发者对构建工具如 webpacknpmnode 及其生态等有相当的了解与应用,才能完美的把控整个项目。

下面将会一步一步的说明如何搭建一个定制化的项目骨架。

2. 选择合适的规范来写代码

js 模块化的发展大致有这样一个过程 iife => commonjs/amd => es6,而在这几个规范中:

  • iifejs 原生支持,但一般不会直接使用这种规范写代码

  • amdrequirejs 定义的加载规范,但随着构建工具的出现,便一般不会用这种规范写代码

  • commonjsnode 的模块加载规范,一般会用这种规范写 node 程序

  • es6ECMAScript2015 定义的模块加载规范,需要转码后浏览器才能运行

这里推荐使用 es6 的模块化规范来写代码,然后用工具转换成 es5 的代码,并且 es6 的代码可以使用 Tree shaking 功能。

参考:

3. 选择合适的构建工具

对于前端项目来说,构建工具一般都选用 webpackwebpack 提供了强大的功能和配置化运行。如果你不喜欢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手教你构建一个web前端项目,全网最详细教程! 的相关文章

  • 自动同步两个 git 存储库

    是否可以保持同步两个 Github 存储库 远程 的特定文件夹 有两个 github 存储库 repoA 和 repoB 这两个存储库都有名为 ABC 的文件夹以及其他独特的文件夹 如果repoA的文件夹ABC中的任何文件有更新 我想自动更
  • 清理远程 Git 分支

    我已经将 SVN 存储库移至 Git 可能由于多次克隆 我现在只剩下一堆看起来像这样的分支 BranchA origin BranchA remotes BranchA remotes origin BranchA remotes orig
  • 如何让 Gitlab 运行程序在成功构建时将代码合并到分支中

    嗯 标题几乎是不言自明的 总之 如果构建成功 我希望将一个分支 即开发 合并到另一个分支 即生产 我尝试了 jakub kania 解决方案 但我总是得到id rsa invalid format 我认为 gitlab 秘密变量以某种方式被
  • git-svn 如何知道要提交到哪个分支?

    我的存储库是 SVN 我使用 git 进行所有开发 我们有一个标准布局 我用以下命令初始化了我的本地存储库git svn init s
  • SSL 适用于浏览器、wget 和curl,但不适用于 git

    我有一个网站 用于托管 redmine 和几个 git 存储库 这非常适合 http 但我无法使用 https 进行克隆 即 git clone http mysite com git test git 工作正常 但是 git clone
  • 更改先前提交的作者姓名:快进推送被拒绝

    我最近在 GitHub 上打开了一个存储库 我是 Git 新手 与新人一样 我使用默认名称和电子邮件进行提交 按照最佳菜鸟传统 我发现五次提交为时已晚 现在乐趣开始了 因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息 美好的 我基
  • Git:以新名称签出旧版本的目录

    如何以新名称查看目录的先前版本 我一直都有一个目录foo在我的仓库中 我想创建一个目录foo old在我当前的工作树中 其内容是HEAD 2 foo 我同时需要两个版本 以确保它们给出相同的结果 测试这需要相当多的代码 并且需要同时提供两个
  • JSON Patch RFC 中的波浪号转义应该如何操作?

    参考文献https www rfc editor org rfc rfc6902 appendix A 14 https www rfc editor org rfc rfc6902 appendix A 14 A 14 逃脱命令 目标 J
  • React Native 中循环 Json 并显示

    How do I go about looping the result i retrieved from Json render function console log this state list contents
  • 合并 BPM 图表的最佳实践

    我们在 Java 环境中使用 Alfresco 活动图 这些图是有版本的 我们确实使用 GIT 我们经常会遇到合并分支的合并冲突 解决这个问题确实很痛苦 因为我们必须比较文件的文本内容来检查差异 有时 重新应用更改比合并更轻松 是否有合并此
  • 在自定义对象中映射 JSON 对象

    我一直在搜索是否可以获取 JSON 字典或数组并将其直接映射到属性与 JSON 标签同名的自定义对象中 但我没有找到任何相关信息 我一直在手动解析 JSON 字典 如下所示 id deserializedObj nil id jsonObj
  • NSData 不接受有效的 base64 编码字符串

    我正在 iOS 7 客户端实现 JSON Web Token 身份验证 效果很好 我的应用程序接收令牌 并可以使用它们对我的服务器进行经过身份验证的调用 现在 我希望我的客户端代码检查令牌的过期日期 以便它知道何时重新进行身份验证 检查 J
  • JSON 从子对象获取父对象

    我怎样才能得到discount值如果品牌id 983 示例 JSON prods info rate 100 grocery brand A brand id 983 brand B
  • Struts2 中有多种结果类型?

    我有一个使用 Tiles 的 Struts2 应用程序 如何在操作映射中获取多种结果类型 因为我需要将de输出设置为JSON数据 并且同时Tiles 我努力了
  • 使用 JSON 文件动态更新 HTML 内容?

    我想创建一个 JS 循环 使用 jQuery 来查看 JSON 文件 并根据是否 div ids 与 JSON id 值匹配 这需要易于扩展并且无论有多少人都可以工作 div 添加了盒子 我有一个 HTML 文件 设置如下 div clas
  • 为什么cherry-pick 告诉我所有行都已更改?

    Updated 考虑文件 abc 在提交 A 和 B 中都相同 begin 123 456 789 klm end 在A中 我们重构第一行123 gt AAA并在结果之上选择 B Git 告诉我们all lines in the file
  • Python:json_normalize pandas 系列给出 TypeError

    我在 pandas 系列中有数万行像这样的 json 片段df json IDs lotId 1 Id 123456 date 2009 04 17 bidsCount 2 IDs lotId 2 Id 123456 date 2009 0
  • json 具有自动完成功能?

    我在用Jquery 自动完成 http docs jquery com Plugins Autocomplete autocomplete url or dataoptions 我也在使用 formatItem 我希望输出是
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • BigQuery 如何获取 JSON 结构中的值的总和?

    我有以下查询 SELECT JSON EXTRACT json Weights as weight from select Weights blue 1 0 purple 0 0 yellow 1 0 green 1 0 as json 返

随机推荐

  • java90到100随机数生成器_java实现随机数生成器

    本文实例为大家分享了java实现随机数生成器的具体代码 供大家参考 具体内容如下 自己编的随机数生成器 比较简陋 功能也单一 当作练手 application java package src public class applicatio
  • 简单上手Raspberry Pi Pico(Ubuntu+MicroPython)

    关于raspberry pi pico的信息我就不多介绍了 直接给几个关键词吧 售价4 微控制器 MicroPython C C 树莓派基金会自研RP2040芯片 两本官方推荐的书 MicroPython版 Get started with
  • 计算机内核态和用户态,用户态和内核态的区别是什么

    用户态和内核态的区别是 内核态运行操作系统程序 操作硬件 用户态运行用户程序 当程序运行在3级特权级上时 可以称之为运行在用户态 当程序运行在0级特权级上时 称之为运行在内核态 本文操作环境 windows10系统 thinkpad t49
  • 修复Qt程序长时间运行控件停止刷新

    问题描述 我的Qt程序有一个时间显示的功能 由于需要保持长期运行 这个时间控件就需要长期持续刷新 但是 当程序运行一段时间后 这个控件就似乎累了一样 不再继续刷新了 为了解决这个问题 我尝试过很多方法 包括 每隔一段时间 获取时间sette
  • linux下安装mysql5.7.17及简单配置&&HIVE安装和使用

    1 mysql5 7 17安装在 usr local mysql目录里面 也可以安装在其他地方 安装包最好与Linux系统一样 eg 32位的就是 mysql 5 7 17 linux glibc2 5 i686 tar gz 官网可下载
  • 基于Android+OpenCV+CNN+Keras的智能手语数字实时翻译——深度学习算法应用(含Python、ipynb工程源码)+数据集(一)

    目录 前言 总体设计 系统整体结构图 系统流程图 运行环境 Python环境 TensorFlow环境 Keras环境 Android环境 1 安装AndroidStudio 2 导入TensorFlow的jar包和so库 3 导入Open
  • 【cfeng work】什么是SaaS? SaaS详细介绍

    WorkProj 内容管理 SaaS SaaS的优势 SaaS的注意项 SaaS产品核心组件 cfeng结合work理解SaaS 本文introduce SaaS的相关内容 昨天cfeng已经介绍过云原生了 其实就是应用在设计上就要围绕Cl
  • 来可电子CAN转232/485设备在使用时可能遇到的问题和解决方案

    使用场景 上位机软件通过232串口发送数据经过CAN转232设备转换成CAN数据发送到仪表中 仪表接收到指定的数据后 返回特定的CAN数据 串口调试工具数据收发测试 CAN转232设备在使用中的接线 使用过程中可能遇到的问题 1 串口按照规
  • JDBC概述

    JDBC JDBC Java Database Connectivity java数据库连接 java语言中用于连接各种数据库的应用程序编程接口 为了解决 使java 编写的程序不再依赖于具体的数据库 JDBC操作不同数据库仅仅只是连接方式
  • 逆天啦!国产自研多环境开发软件 CEC-IDE 问世,“卡脖子”问题完美解决?

    来自 JavaGuide 震撼到了 厉害 继国产自研浏览器 国产自研操作系统 国产自研手机系统后的全新力作 国产自研 IDE 它就是 CEC IDE 一款由数字广东公司与麒麟软件联合打造的 是国内首个适配国产操作系统 自主创新的一款安全 专
  • 李沐论文精读系列一: ResNet、Transformer、GAN、BERT

    文章目录 一 ResNet 1 0 摘要 论文导读 1 1 导论 1 1 1 为什么提出残差结构 1 1 2 实验验证 1 2 相关工作 1 3 实验部分 1 3 1 不同配置的ResNet结构 1 3 2 残差结构效果对比 1 3 3 残
  • Discuz论坛 创始人/超级管理员密码忘记解决办法!

    1 首先要明白一个基础知识 网站的管理员 admin 和创始人 UCenterAdministrator 不是一回事 一般人都误把admin当成UCenterAdministrator 而那些懂的人在给人们讲如何找回密码 比方使用tools
  • 浅谈对梯度下降法的理解

    浅谈梯度下降法 如果读者对方向导数和梯度的定义不太了解 请先阅读上篇文章 方向导数与梯度 前些时间接触了机器学习 发现梯度下降法是机器学习里比较基础又比较重要的一个求最小值的算法 梯度下降算法过程如下 1 随机初始值 2 迭代 直至收敛 表
  • VMware 安装 OpenWrt 旁路由并配置 PassWall

    1 准备 OpenWrt 镜像包 我已经转好了 vmdk 格式的 更多的可以去恩山论坛下载 OpenWrtvmdk格式 虚拟化文档类资源 CSDN下载 也可以在这个平台在线定制 OpenWrt固件下载与在线定制编译 2 网络选择 NAT 模
  • Tensorflow中的GPU分配方法

    Tensorflow中的GPU分配方法 默认情况下 TensorFlow 会使用其所能够使用的所有 GPU 这样 会出现浪费的情况 列出当前设备上的GPU和CPU 首先 通过 tf config experimental list phys
  • Python scrapy爬虫 生成 启动 crawlspider命令 爬取示例网站的数据案例

    创建一个scrapy项目 scrapy startproject myscrapy 生成一个爬虫 scrapy genspider example example com 启动爬虫 scrapy crawl example 生成crawls
  • vim终极配置:spf13-vim

    spf13 vim介绍 1 没有超户的linux操作系统如何安装vim最新版 spf13 vim常用插件介绍 1 NERDTree 2 neocomplcache 3 EasyMotion 4 ctags 5 tagbar 1 spf13
  • Python下pefile的使用

    其实在pefile主页的Wiki上已经详细介绍了 https code google com p pefile wiki UsageExamples这里给出了使用例子 同时参照着看雪http bbs pediy com showthread
  • Count Color 【POJ - 2777】【线段树】

    题目链接 这道题一开始觉得处理颜色很繁琐 但是后来发现了个东西 T lt 30 对于这个数据 似乎可以开成比特位 二进制 然后进行处理 会发现 这就是区间更新的线段树了 有几个坑 我跳进去过了 一个是初始化要为1 颜色1 其次A和B的大小是
  • 手把手教你构建一个web前端项目,全网最详细教程!

    1 选择现成的项目模板还是自己搭建项目骨架 搭建一个前端项目的方式有两种 选择现成的项目模板 自己搭建项目骨架 选择一个现成项目模板是搭建一个项目最快的方式 模板已经把基本的骨架都搭建好了 你只需要向里面填充具体的业务代码 就可以通过内置的