前言

H5即HTML5,H5开发具有低成本、高效率、跨平台、研发周期短,用户接触成本低等特性。

一、开发环境

在开发一个H5项目之前,需要先搞好环境。主要有node、npm、gulp、bower。下面分别介绍一下这些工具的安装和使用。

第一步:安装Node

首先,最基本也最重要的是,我们需要搭建node环境。然后点击大大的绿色的install 按钮,下载完成后直接运行程序,就一切准备就绪。 npm 会随着安装包一起安装,稍后会用到它。 接下来,可以使用命令行来检测Node和npm是否正确安装:

node -v npm -v

如果安装正确,会看到版本号信息。如果这两行命令没有得到返回,可能node没有安装正确,尝试重启下命令行工具,如果还不行的话,只能回到第一步进行重装。

第二步:安装gulp

首先,定位到项目。 使用 ls 可以列出文件列表,使用 cd 可以进入项目目录。

接下来,开始安装gulp。执行以下命令:

sudo npm install -g gulp

其中, 1、sudo是以管理员身份执行命令,一般会要求输入电脑密码 2、npm是安装node模块的工具,执行install命令 3、-g表示在全局环境安装,以便任何项目都能使用它 4、最后,gulp是将要安装的node模块的名字

运行时注意查看命令行有没有错误信息,安装完成后,你可以使用下面的命令查看gulp的版本号以确保gulp已经被正确安装。

gulp -v

接下来,我们需要将gulp安装到项目本地。

npm install —-save-dev gulp

这里,我们使用 —-save-dev 来更新package.json文件,更新 devDependencies 值,以表明项目需要依赖gulp。

接着,新建Gulpfile文件,运行gulp。安装好gulp后我们需要告诉它要为我们执行哪些任务,这里假设有以下四个任务: 1、检查Javascript 2、编译Sass(或Less之类的)文件 3、合并Javascript 4、压缩并重命名合并后的Javascript

安装依赖:

npm install gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename --save-dev

现在,组件都安装完毕,我们需要新建gulpfile文件以指定gulp需要为我们完成什么任务。gulp只有五个方法:task , run , watch , src ,和 dest *,在项目根目录新建一个js文件并命名为 *gulpfile.js ,把下面的代码粘贴进去:

**gulpfile.js**

// 引入 gulp
var gulp = require('gulp'); // 引入组件
var jshint = require('gulp-jshint');
var sass = require('gulp-sass');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename'); // 检查脚本
gulp.task('lint', function() {
gulp.src('./js/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
}); // 编译Sass
gulp.task('sass', function() {
gulp.src('./scss/*.scss')
.pipe(sass())
.pipe(gulp.dest('./css'));
}); // 合并,压缩文件
gulp.task('scripts', function() {
gulp.src('./js/*.js')
.pipe(concat('all.js'))
.pipe(gulp.dest('./dist'))
.pipe(rename('all.min.js'))
.pipe(uglify())
.pipe(gulp.dest('./dist'));
}); // 默认任务
gulp.task('default', function(){
gulp.run('lint', 'sass', 'scripts'); // 监听文件变化
gulp.watch('./js/*.js', function(){
gulp.run('lint', 'sass', 'scripts');
});
});

现在,分段解释下这段代码。

    //引入组件
var gulp = require('gulp');
var jshint = require('gulp-jshint');
var sass = require('gulp-sass');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');

这一步,我们引入了核心的gulp和其他依赖组件,接下来,分开创建lint, sass, scripts 和 default这四个不同的任务。

//Lint任务
gulp.task('lint', function() {
gulp.src('./js/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
});

Lint任务会检查 js/ 目录下得js文件有没有报错或警告。

//Sass任务
gulp.task('sass', function() {
gulp.src('./scss/*.scss')
.pipe(sass())
.pipe(gulp.dest('./css'));
});

Sass任务会编译 scss/ 目录下的scss文件,并把编译完成的css文件保存到 /css 目录中。

//Scripts 任务
gulp.task('scripts', function() {
gulp.src('./js/*.js')
.pipe(concat('all.js'))
.pipe(gulp.dest('./dist'))
.pipe(rename('all.min.js'))
.pipe(uglify())
.pipe(gulp.dest('./dist'));
});

scripts任务会合并 js/ 目录下得所有得js文件并输出到 dist/ 目录,然后gulp会重命名、压缩合并的文件,也输出到 dist/ 目录。

//default任务
gulp.task('default', function(){
gulp.run('lint', 'sass', 'scripts');
gulp.watch('./js/*.js', function(){
gulp.run('lint', 'sass', 'scripts');
});
});

这时,我们创建了一个基于其他任务的default任务。使用 .run() 方法关联和运行我们上面定义的任务,使用 .watch() 方法去监听指定目录的文件变化,当有文件变化时,会运行回调定义的其他任务。

现在,回到命令行,可以直接运行gulp任务了。

gulp

这将执行定义的default任务,换言之,这和以下的命令式同一个意思。

gulp default

我们可以运行在gulpfile.js中定义的任意任务,比如,现在运行sass任务:

gulp sass

第三步:安装bower

Bower是一个客户端技术的软件包管理器,它可用于搜索、安装和卸载如JavaScript、HTML、CSS之类的网络资源。在安装bower之前,有必要了解下bower和npm的区别:

NPM 是node js的包管理器,用来下载安装node js的第三方工具包,也可以用来发布你自己开发的工具包。NPM主要运用于Node.js项目的内部依赖包管理,安装的模块位于项目根目录下的node_modules文件夹内。 Bower 是一个前端库管理的工具,管理一些js库,比如说jQuery,bootstrap等。通过bower,你就不用自己去找jQuery文件了,通过配置文件就可以自动完成了。

为什么有很多项目 Bower 和 NPM 都用呢,那是因为要用 bower 管理前端的包,而用 npm 去管理一些后端的包和构建工具,例如,yeoman,grunt,gulp,jshint 等等。

接下来,可以通过NPM安装Bower,执行以下命令:

npm install -g bower

其中 -g 命令表示全局安装 。

二、项目结构和如何启动

一个H5项目的结构主要有以下几个部分:

src :主要包括partials(存放html文件)、images图片、scripts脚本、styles样式(存放css、scss等)、data(mock数据)。

.gitignore :用于配置不需要加入版本管理的文件,告诉Git哪些文件不需要添加到版本管理中。[配置语法:以斜杠“/”开头表示目录;以星号“*”通配多个字符;以问号“?”通配单个字符;以方括号“[]”包含单个字符的匹配列表;以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;] 这样,被过滤掉的文件就不会出现在GitLab库中了,当然本地库中还有,只是push的时候不会上传。

deploy : 配置dev , test , beta ,prod环境下如何起服务.

dist :产出的代码。

package.json :package.json是包配置文件,必须是一个严格的json文件。其中很多属性可以通过npm-config来生成。使用npm init命令会引导创建一个package.json文件。 npm安装package.json时,直接转到当前项目目录下用命令npm install安装即可,自动将package.json中的模块安装到node-modules文件夹下。package.json中包含各种所需模块以及项目的配置信息(名称、版本、作者、许可证等)meta 信息,其中name和version必不可少。

dep2dev.sh:发布到dev的命令。

README.md :说明文档。

启动一个H5项目主要有以下几个步骤:

首先在gitlab里新建一个模版项目,将项目地址copy下来,然后执行以下命令:

拷贝项目到本地: *git clone git@git.jdb-dev.com:mars/newH5Pro.git *

进入项目: cd newH5Pro

修改package.jsonname为你的项目包名: vim package.json

安装node依赖: npm install

启动项目: gulp serve

三、H5项目调适

场景:本地调适H5项目

步骤如下所示: 由于H5项目只是页面,在本地改动代码后,通过 gulp serve 可以看到代码改动后的效果。在命令行执行gulp serve 后生成dist文件夹,dist下存放着要执行的代码文件,在浏览器中打开页面时会依次读取dist下的代码文件。

四、H5项目的开发流程

首先,将最新代码push到gitlab,在命令行输入:

git status

git add proNameOne proNameTwo // 若proNameOne proNameTwo为新增加或新更改的文件;若add所有,则执行git add .

git commit -m "newH5Pro"

git push

(一)dev 环境

*执行脚本:sh dep2dev.sh *

eg. newH5Pro git:(master) ✗ sh dep2dev.sh

(二)beta 环境

Jenkins -> 部署BETA环境

(三)prod 环境

*Jenkins ->上线-上传FTP服务器 *

发jira单 -> 点击“创建” [通知op上线]

其中,“创建问题”表单里的项目写要上线的项目描述,server平台为h5,描述内容主要包括影响范围、发布内容、FTP地址、发布步骤 (1、发布FE 2、qa测试 )、发布时间、发布负责人。

注意:部署到各个环境之前,记得先在浏览器里输入URL自测下是否能正确打开。

(四)test 环境

以adPage项目为例:

  1. 下载密钥文件kp-docker-trade,修改下面密钥文件的地址
  2. 登录 sudo ssh trade@100.73.128.2 -i ~/Documents/jiedaibao/kp-docker-trade 然后输入mac密码 cd 到h5/dst下创建自己的文件夹。
  3. 上传代码: sudo scp -i ~/Documents/jiedaibao/kp-docker-trade -r dist/* trade@100.73.128.2:/data/trade/h5/dst/adPage 访问地址:http://h5.test.jiedaibao.com/adPage/adPage

五、H5项目中 URL拼写规范

(一) 本地

本地 URL拼写顺序为:http://本地IP地址:端口号/根目录dist里的路径?key=value

以h5app为例,eg. http://100.66.168.167:8008/partials/anniversary/index.html?tojdb=jdb

其中,根目录为dist, dist路径为dist/partials/anniversary/index.html

(二) dev环境

dev 环境的URL拼写规则为:http://dev域名/项目名称/根目录dist里的路径

以h5app为例,eg. http://h5.dev.jiedaibao.com/h5app/partials/anniversary/index.html

其中,dev域名为:h5.dev.jiedaibao.com

项目名:项目名要和 dep2dev.sh 脚本文件里的 project名称同步 ,eg:project="h5app",所以这里的项目名为h5app.

dist路径为:dist/partials/anniversary/index.html

(三)beta 环境

beta 环境下的URL拼写规范为:https://beta域名/项目名称/根目录dist里的路径

以h5app为例,eg. https://beta-h5.jiedaibao.com.cn/h5app/partials/anniversary/index.html

其中,beta域名为:beta-h5.jiedaibao.com.cn

beta 环境下的URL拼写规范和dev相似,只是把域名换成了beta 下的域名。

(四)prod 环境

prod环境下的URL拼写规范为:https://线上域名/项目名称/根目录dist下的路径

仍以h5app为例,eg. https://app.jiedaibao.com/h5app/partials/anniversary/index.html

or https://app.jiedaibao.com.cn/h5app/partials/anniversary/index.html

其中,线上域名主要有两个:app.jiedaibao.com ,app.jiedaibao.com.cn

如何开发H5项目 -- 入门篇的更多相关文章

  1. 云小课|DGC数据开发之基础入门篇

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:欢迎来到DGC数据 ...

  2. 学习版pytest内核测试平台开发万字长文入门篇

    前言 2021年,测试平台如雨后春笋般冒了出来,我就是其中一员,写了一款pytest内核测试平台,在公司落地.分享出来后,有同学觉得挺不错,希望能开源,本着"公司代码不要传到网上去,以免引起 ...

  3. 如何开发、调试Hybrid项目-- 入门篇

    前言 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发效率的要求,这个时候使用IOS&Andriod开发一个APP似乎成本有点过高了,而H5的低成本.高效率.跨平台等特性 ...

  4. Django开发博客 入门篇

    Django是神马? Django是一个开源免费的Web框架,使用Python编写.能够让你快速写出一个Web应用, 因为它包含了绝大部分的组件,比如认证,表单,ORM,Session,安全,文件上传 ...

  5. 白鹭引擎EUI做H5活动 入门篇

    前言:本学习文档的目的是为了实现h5,或者简单的h5游戏,比如说,我们要实现一个可以左右,或者上下移动的场景的h5,在场景移动的过程中,会有相应的动画或者操作,我们通过 js 也可以实现,但是为了流畅 ...

  6. IDEA配合Flash CS6开发Flash项目--配置篇

    前端篇: 1:下载好IDEA和Flash CS6 2:配置IDEA 打开IDEA,点击创建新项目,选择Flash项目. 一开始没有装Flex SDK的界面会显示红色的none字样,这时需要找到自己下载 ...

  7. weex入门篇

    weex入门篇 Weex 致力于使开发者能基于当代先进的 Web 开发技术,使用同一套代码来构建 Android.iOS 和 Web 应用. weex SDK 集成了vueJS,Rax,不需要额外引入 ...

  8. 使用Spring Boot开发Web项目(二)之添加HTTPS支持

    上篇博客使用Spring Boot开发Web项目我们简单介绍了使用如何使用Spring Boot创建一个使用了Thymeleaf模板引擎的Web项目,当然这还远远不够.今天我们再来看看如何给我们的We ...

  9. 无责任Windows Azure SDK .NET开发入门篇一[Windows Azure开发前准备工作]

    一.Windows Azure开发前准备工作 首先我们需要了解什么是 Azure SDK for .NET?微软官方告诉我们:Azure SDK for .NET 是一套应用程序,其中包括 Visua ...

随机推荐

  1. MVC5 + EF6 完整入门教程三:EF来了

    期待已久的EF终于来了 学完本篇文章,你将会掌握基于EF数据模型的完整开发流程. 本次将会完成EF数据模型的搭建和使用. 基于这个模型,将之前的示例添加数据库查询验证功能. 文章提纲 概述 & ...

  2. VS2012+LUA环境搭建

    1 .启动VS2012,选择C++下的"win32"项目类型中的"Win2控制台应用程序" 2.工具——选项——项目和解决方案——VC++目录——可执行程序(C ...

  3. Scipy学习笔记 矩阵计算

    Scipy学习笔记 非本人原创  原链接 http://blog.sina.com.cn/s/blog_70586e000100moen.html 1.逆矩阵的求解 >>>impor ...

  4. AtCoder Grand Contest 6

    A - Prefix and Suffix 题意:输入一个整形变量n和两个字符串s,t,使用一些规则求满足条件的最短字符串的长度:规则如下:这个最短字符串的长度不能小于n:它的前n个字符必须与s相同: ...

  5. Plupload上传组件 + javaweb实现上传源码以及DEMO

    Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度.图像自动缩略和上传分块.可同时上传多个文件: 上网找了很多Plupload的DEMO都无法正常使用, 而且Pluploa ...

  6. 黑马程序员——OC语言基础语法 面向对象的思想

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...

  7. webdriver无法打开firefox

    1.执行webdriver.firefox()报错,提示: WebDriverException: Message: "Can't load the profile. Profile Dir ...

  8. EXT 环境部署

    1. 准备工作 在开始搭建Ext 开发环境前,你需要安装好下列工具/程序: JDK1.5 MyEclipse 3.  Ext 基类代码 2. 安装JDK1.5 2.1. 确定已安装的JDK版本 点击开 ...

  9. Web前端开发的前景与用处

    随着时代的发展,现在从事IT方向的人有很多,所以励志要成为前端开发工程师的人有很多.当然也有很多人在犹豫不知道该从事哪个方向,我今天就是来给大家分析一下Web前端开发的前景.包括工作内容,发展前景和薪 ...

  10. HBase查找一条数据的过程

    HBase中的Client如何路由到正确的RegionServer 在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的 Regi ...