H5实践(2)- H5辅助开发环境搭建

2024-09-02 22:48

本文主要是介绍H5实践(2)- H5辅助开发环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

H5游戏开发上的先天不足

做H5游戏开发时,通常都会遇到些问题。

这里总结下本人开发过程中遇到的:

  • 开tomcat、nginx、apache之类的web服务器,提供网址
  • 需要支持webpack、browserify之类的打包工具,使之能require模块编程。可以使用node.js库。
  • 使用gulp、webpack-dev-server之类的热更调试服务器
  • websocket到tcp服务器的代理。方便网页直接访问tcp服务器
  • 解决浏览器跨域问题

下面,对于每小点,依次详细解释之。

支持Node.js库的H5编程

很久以前的JS编程是不支持模块化编程的。

即类似 requiremodule之类的概念是没有的。

现在主流的,都会使用npm、nodejs。

为了在网页上可以使用require,则必须使用 webpack、browserify之类的打包工具。

使js文件代码,转化为页面能识别的js语法。

本系列使用的webpack打包工具。

所有辅助工具都是围绕webpack,来做集成的。

热更新(自动打包、自动刷新页面)

js的热更新网上搜下一大箩。

然而绝大多数都是不能简单使用的。因为需要和webpack做配合。

总结下,需要做下面的几件事:

  • 能监视js、html、css等文件变化
  • 能触发变化事件,并重新使用webpack打包
  • 能通知页面自动刷新

因此,最终,通过集成下面的内容,实现了上述功能:

  • express
  • gulp
  • gulp-webpack
  • gup-connect

主要代码示例:

webdevjs.start = function (configfile) {if (!configfile) {configfile = './webpack.config.js';}configfile = process.cwd() + '/' + configfile;var config = require(configfile);gulp.task('html', function () {gulp.src(config.devServer.watch_html).pipe(gulpConnect.reload());});gulp.task('webpack', function () {gulpWebpack(require(configfile)).pipe(gulp.dest('.')).pipe(gulpConnect.reload());});gulp.task('default', function () {webdevjs.runweb(config);gulpConnect.server({livereload: true,port: config.devServer.port,middleware: function (connect, opt) {return [httpProxyMiddleware('/', {target: 'http://localhost:' + String(config.devServer.port + 1),changeOrigin: true})];}});gulp.watch(config.devServer.watch_html, ['html']);gulp.watch(config.devServer.watch_js, ['webpack']);});gulp.start();
};

TCP服务代理

H5网页现在做长连接的有2种方式:

  • 通过flash对象来做tcp长连接
  • 使用websocket来做基于websocket协议的长连接

由于flash as3编程,在手机端不是很流行。因此现在主流使用websocket。

因此,H5应用网络模块通常2种情况:

  1. 页面WebSocket => 支持websocket协议的游戏服务器
  2. 页面WebSocket => TCP代理服务器 => TCP协议游戏服务器

正式外网服务必定使用1。
其他用途,可1、可2。

浏览器跨域问题

正式情况不应该出现浏览器跨域问题。

即,游戏服务器必须提供可跨域的方式。如 支持 GET 方式请求,则浏览器有方法绕过跨域问题。

否则,则只能在浏览器端通过增加些启动参数,关闭浏览器某些安全功能。来绕过跨域问题。

通用的开发用web服务器

为了便利开发,可以把上述这些问题,集成到一个通用的辅助web服务器中。

可以参考本人github上的项目webdev。网址:

https://github.com/fananchong/webdev

这篇关于H5实践(2)- H5辅助开发环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131288

相关文章

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再