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

相关文章

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

MongoDB搭建过程及单机版部署方法

《MongoDB搭建过程及单机版部署方法》MongoDB是一个灵活、高性能的NoSQL数据库,特别适合快速开发和大规模分布式系统,本文给大家介绍MongoDB搭建过程及单机版部署方法,感兴趣的朋友跟随... 目录前言1️⃣ 核心特点1、文档存储2、无模式(Schema-less)3、高性能4、水平扩展(Sh

MySQL存储过程实践(in、out、inout)

《MySQL存储过程实践(in、out、inout)》文章介绍了数据库中的存储过程,包括其定义、优缺点、性能调校与撰写,以及创建和调用方法,还详细说明了存储过程的参数类型,包括IN、OUT和INOUT... 目录简述存储过程存储过程的优缺点优点缺点存储过程的创建和调用mysql 存储过程中的关键语法案例存储

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7