• Stars
    star
    158
  • Rank 237,131 (Top 5 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 6 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Vue单页面应用脚手架Gaea 4.0

Gaea

Vue技术栈单页面构建工具

Getting Started

Gaea构建工具是基于Node.js、Webpack模版工程等的Vue技术栈的整套解决方案,包含了开发、调试、打包上线完整的工作流程

Prerequisites

请先安装node,版本大于10.15.0,如果没有安装,请前往安装

Installing

  1. npm i gaea-cmd -g 全局安装
  2. g2 init projectName(gaea init projectName) 初始化项目,项目名字和目录名字一致会默认在当前文件下生成模版
  3. npm i 安装依赖
  4. npm run dll 编译第三方库

Npm Scripts

  • npm run dev 开发
  • npm run build 打包编译
  • npm run upload 上传
  • npm run lint 代码检查、格式化
  • npm run carefree 真机调试
  • npm run skeleton 骨架屏注入
  • npm run compress 图片压缩转换

Feature

Usage

安装后,使用之前还需要配置上线路径、项目信息等

webpack.config.js 配置上传

配置上传测试服务器地址和路径,具体可参看,配置上传的host、用户名username、密码password、上传地址target example

new WebpackUploadPlugin({
    source:'build',
    ignoreRegexp:/node_moudles/,
    httpOption:{
        host:'测试服务器地址',
        port:3000,
        username:'',
        password:'',
        target:`/var/www/html/${config.ftpServer}/${config.ftpTarget}`
   }
})

webpack.config.js 配置真机调试

配置carefree真机调试,具体可参看,例如:我们将开发阶段的代码打包上传至测试域名page.jd.com,用于真机扫二维码调试 example

new Carefree({
    justUseWifi: false,
    publicPath: '//page.jd.com/'+config.ftpTarget+'/'+config.version+'/',
    ftp: {
        host: '测试服务器地址',
        port: 3000,
        source: 'build',
        target: '/var/www/html/page.jd.com/'+config.ftpTarget+'/'
    }
})

webpack.dll.config.js 配置第三库依赖

目前的第三方库有 vue、qs、axios、vue-router等,如果增加和删除的话,可以更改字符串:"vue,qs,axios,vue-router" ;重新执行npm run dll

package.json 配置项目信息

  • name 项目名称
  • version 项目版本,控制上线静态资源版本 例如: https://static.360buyimg.com/exploit/mtelink/1.0.0/js/app.js
  • publicPath 项目上线 html 中静态资源的路径地址前缀 例如://static.360buyimg.com/exploit/mtelink 如果是html和静态资源都交给后端,那么这个值设置成空就行。
  • ftpServer 项目上传根目录 例如:misc.360buyimg.com | static.360buyimg.com
  • ftpTarget 项目上传的文件目录 例如:exploit/test | exploit/mtelink 不要以 / 开头,否则会被认为是服务器的根目录。
  • tinypngkey 使用TinyPNG 需要去官网注册KEY,填入这个字段,后续就可以用npm run compress压缩图片。
  • vendorVersion 第三方依赖库的版本控制,提供第三库在上线后,也需要加版本号上线兜底方案 例如:https://static.360buyimg.com/exploit/mtelink/lib/vendor.dll.js | https://static.360buyimg.com/exploit/mtelink/lib/1.0.0/vendor.dll.js

Project Catalog

  1. src目录下的文件功能如下:
  • index.html 页面模板
  • app.js 入口文件
  • app.vue 渲染最高级路由匹配到的组件用的出口vue文件
  • router.js 路由文件,在此文件中配置路由信息
  1. src子目录功能如下:
  • view 存放用作页面视图的vue文件
  • component 存放用作组件的vue文件
  • asset 在其中的css、js、img目录存放css/js/图片文件
  • build目录 存放构建出的文件 1.0.0 是业务代码版本上线文件夹,lib/vendor.js 是静态文件第三库,不会随着业务代码更改而变化的。
  1. webpack.config.js 是开发和编译项目的配置文件
  2. webpack.dll.config.js 是编译抽离第三方库的配置文件
  3. static/vendor.dll.js 和 static/vendor-manifest.json 是 npm run dll 生成的第三方库静态文件和索引文件

Other Features

图片压缩篇

采用TinyPNG node.js API 进行在线压缩图片,并且转换Webp格式文件,需要去官网注册KEY,填入package.json文件 tinypngkey字段。每个账号每个月有500次的免费上传压缩限制。

路由篇

文件router.js 配置了脚手架的相关路由信息,推荐使用【history】路由。脚手架支持history路由和hash路由。在 router.js 中默认是history路由。它是真实的路由地址,所以需要后台那帮你配置重定向。

比如首页的路由是 http://telink.jd.com/index。那么你的路由的首页也是/index 。 比如搜索页/search 是不存在后端服务器上的。所以需要你让后端把其余的单页面的路由都重定指向首页的vm。

对于carefree,上传到测试服务器page.jd.com 默认是hash路由,方便大家进行测试

const router = new VueRouter({
    mode:carefree?'hash':'history',
    routes
});

骨架屏篇

脚手架提供了vue的骨架屏注入方案,在命令行工具选择骨架屏,就会下载骨架屏相对应的模板。

src/skeleton 就是基于vue-server-renderer服务端渲染,抽取手写骨架屏的css 和 html 注入到 打包的html中。

src/skeleton/skeleton.vue 文件就是手写的骨架屏组件,推荐只渲染入口页首屏骨架 npm run skeleton 就会将src/skeleton/index.html 生成到外层src/index.html 注入完成后,就可以后续正常开发

SMOCK篇

smock 是开发阶段基于swagger的自动化mock假数据工具,需要配置参数如下: 修改package.json 中字段,具体可以参看

"smock": {
    "docPath": "", //ip地址
    "realHostName": "" //域名
  },

eslint 和 prettier篇

脚手架支持npm run lint 一键检查和格式化src目录下的业务.js,.vue文件,遵循standard,eslint-plugin-vue标准。关闭了一些严格的要求,如果有个性化需求可以在Webpack模版工程下的.eslintrc.js文件设置规则。

重点是,由于加了eslintrc相关文件,Vscode等编辑器会提示报错,体验比较糟糕,为了不影响开发心情,可以关闭Vscode的提示,只在需要的时候执行一遍命令,就可以自动修改和提示需要修复的报错。

Note

  • 上线逻辑,前后端分离上线,lib/vendor.js 属于第三方库会发生变动机会比较小,所以在后续迭代可以不需要上线,只需要上线1.0.0/或者1.0.1/版本的文件
  • 如果是覆盖上线,需要统一一次刷新cdn所有静态资源路径,因为整个build包是一个整体。如果是流量较高的业务,建议新增版本上线,覆盖版本上线有小风险。
  • 使用carefree时候,注意自己的cmd等是黑色背景主体,不然二维码是反的。

Plan

开发计划

Change Log

更新日志

License

MIT License - LICENSE

More Repositories

1

nutui

京东风格的移动端 Vue 组件库,支持多端小程序(A Vue.js UI Toolkit for Mobile Web)
Vue
6,052
star
2

nutui-react

京东风格的移动端 React 组件库 、支持多端小程序(A React UI Toolkit for Mobile Web)
TypeScript
886
star
3

nutui-bingo

Bingo - 基于 NutUI 的抽奖组件
Vue
423
star
4

jdf

🛠️京东前端自动化构建工具
JavaScript
168
star
5

nutui-demo

NutUI 示例项目
JavaScript
131
star
6

nutui-react-native

JD-style mobile UI components based on React Native that support users to develop APP and H5.
TypeScript
127
star
7

SMock

自动创建Mock数据服务平台
JavaScript
101
star
8

nutui-cat

大促组件库
Vue
88
star
9

nutui-biz

NutUI 业务组件库 react 版
TypeScript
56
star
10

rocketact

🚀Developing React projects with ease
TypeScript
47
star
11

dps

a way to make skeleton screen
JavaScript
35
star
12

audioCreate.js

一款可以创建多个audio标签并且很大限度兼容app端、微信端、h5端、pc端的audio.js插件
JavaScript
24
star
13

share_course

💡我们的分享
21
star
14

beacon

一个基于React的标准化视觉组件库
JavaScript
20
star
15

H5-collection

🤡html5案例合集
19
star
16

webpack4-demo

webpack 4.0.0-beta 新特性实践代码
JavaScript
17
star
17

yep-mp-com

小程序组件库 组件源码
JavaScript
16
star
18

yg_cli

云构平台-cli
JavaScript
14
star
19

nutui-lib

NutUI lib 内置插件(cli、markdown、separate-import、markdown-to-vue)
Vue
12
star
20

nutui-icons

nutui icons
HTML
11
star
21

nutui-docs

nutui vue & react & jdt 官网
Vue
10
star
22

jdc_fe_guide

规范 前端 FE JDC 前端开发部 开发 项目 最佳实践
JavaScript
7
star
23

mp-nutui

convert nutui components to miniProgram
Vue
7
star
24

webpack-upload-plugin

webpack upload plugin
JavaScript
5
star
25

separate-import

按需引入Nutui2.0组件,减小打包体积
JavaScript
5
star
26

yep-vue

yep vue UI component 组件
Vue
3
star
27

jdf-template-transform

velocity->smarty/trimpath模板转换包
JavaScript
3
star
28

SMock-core

SMock核心代码,支持webpack,SMock等途径的直接调用。
TypeScript
3
star
29

yg_server

云构平台-server
JavaScript
3
star
30

jdf-utils

jdf-base
JavaScript
3
star
31

jdiff

jdiff 本地 <===> 远程 对比工具
HTML
3
star
32

vue-nut-slider

Vue移动端滑动轮播组件
Vue
3
star
33

client-upload

use http or sftp to upload locale files
JavaScript
3
star
34

nutui-issue-helper

NutUI Issue Helper
Vue
3
star
35

jdf-log

jdf日志模块
JavaScript
2
star
36

pic_coordinate_pickup

📌在图片上标记坐标
JavaScript
2
star
37

nutui-taro

NutUI 对 Taro 的适配,包括 vue 和 react 两个技术栈的实现。
2
star
38

rocketact-scripts

TypeScript
2
star
39

jdf-extract-template

【jdf插件】抽取widget模板中的前端模板,以字符串形式置入js文件中
JavaScript
2
star
40

watermark

水印
JavaScript
2
star
41

yep-mp-cli

小程序组件库命令行工具
JavaScript
1
star
42

webgl-demo

WebGL相关demo
JavaScript
1
star
43

yep-mp

yep miniproject UI Components & Solutions
1
star
44

jdf-sass-old

只为兼容旧项目中,使用的老版本sass. 不赞成使用!!!
JavaScript
1
star
45

rockact-yep-react

yep-react demo project bootstrapped with rockact.
TypeScript
1
star
46

httpupload

server side for jdf output command usde in http mode
JavaScript
1
star
47

jdf-env-switch

【jdf插件】切换生产环境和开发环境
JavaScript
1
star
48

seajs-builder

seajs模块自定义构建id和deps
JavaScript
1
star
49

jdf-images

jdf-images
JavaScript
1
star
50

jdf-img-minify

JDF 图片压缩集成工具包
JavaScript
1
star
51

rocketact-plugin-butler

Rockectact plugin for legacy butler projects
JavaScript
1
star