1.å端å¦ä»ä¹ï¼
2.Webå端å¼å主è¦å¦åªäºè¯¾ç¨ï¼
3.C++开源http服务框架WHttpServer
å端å¦ä»ä¹ï¼
HTMLï¼CSSï¼Javaè¿ä¸æ ·ççå¾éè¦ï¼HTMLååºåºç¡é¡µé¢ï¼CSSå°HTMLéæ页é¢ä»é»ç½è²è¿æ¸¡å°äºé¢å è²ï¼ç¶åjavaå¯ä»¥è®©æ¯ç¥çéææååæå¯ä»¥äº¤äºçå 容ãæ¡æ¶åæä¹æ´æ°è¿ä»£ï¼æåºç¡çä¸è¥¿è¿æ¯è¿ä¸æ ·.ææ¡äºHTML+CSS+Javaåï¼æåæå¼äºå端ç大é¨ãæ¥ä¸æ¥å°±æ¯è¿é¶é¨åï¼ä»jsè¿é¶å°jquery-ï¼jQueryå°±æ¯javaçä¸ä¸ªåºï¼æ常ç¨çä¸äºåè½è¿è¡äºå°è£ ï¼æ¹ä¾¿æ¥è°ç¨ï¼æé«å¼åæçï¼åæ¶æ大å°ç®åäº Java ç¼ç¨ã
æ©å±èµæï¼å端çå¼åä¸ï¼å¨é¡µé¢çå¸å±æ¶ï¼ HTMLå°å ç´ è¿è¡å®ä¹ï¼CSS对å±ç¤ºçå ç´ è¿è¡å®ä½ï¼åéè¿JavaScriptå®ç°ç¸åºçææå交äºã
ç¶ååå°angular-ä¸ç§æ´å çµæ´»ã强大çæ°æ®ç»å®ãhtmlæ©å±çjsåºï¼ç¶åå°ajaxãjsonãxmlï¼å¯ä»¥ååå°è¿è¡ååå¼åçæè½ã
å¦ä¼è¿äºä¸è¥¿ä¹åï¼å°±è½å®ææ¶ä¸æµè¡çåç§PC端ç½é¡µç¹æãåå端交äºï¼å¨éå¾å端çè·¯ä¸å¾åè¿ä¸äºåå®çä¸å¤§æ¥ã
Webå端å¼å主è¦å¦åªäºè¯¾ç¨ï¼
èå®è¯´ï¼å端ç»è¿è¿å å¹´çå¿«éåå±ï¼ç½ä¸çæç« åæç¨è¿æ¯è®å¤çï¼æç»éªç人è½å¤æ ¹æ®èµæå¶å®åºå±äºèªå·±çå¦ä¹ æ¹æ³åè·¯å¾ï¼ä½å¯¹äºå°ç½æ¥è¯´ï¼è¿æ¯æäºé¾åº¦ãç¥äºå§æ¥ç»å¤§å®¶å享å端å¦ä¹ è·¯å¾ãé对0åºç¡ï¼éç§çï¼æ²¡æç¼ç¨ç»éªï¼æ³å¦å端ï¼ä½æ¯ä¸ç¥éå¦ä½å ¥é¨ç人群ãåºç¡é¨åï¼
1ãHTML + CSS è¿é¨åå¦ä¹ ï¼å¯ä»¥æ¨¡ä»¿ä¸äºç½ç«åäºé¡µé¢ï¼å¨å®è·µä¸ç§¯ç´¯ç»éªãåå°è½ä¸UI对æ¥ï¼è½%éæç½ç«éæ页é¢çå¼åï¼ä¸ºåæç¼å页é¢é»è¾ãå¨ææææåºç¡ã
2ãJavascript è¦å¦çå 容å®å¨å¾å¤ï¼å¦æ没æå ¶ä»ç¼ç¨è¯è¨çåºç¡çè¯ï¼å¦èµ·æ¥å¯è½è¦è´¹äºåï¼è¿ä¸ªé¶æ®µéè¦ææ¡ç¼ç¨åºç¡æ¦å¿µï¼å¹å »é»è¾æç»´è½åãè½å¤ç¬ç«å®æç½ç«ç页é¢å¼åï¼å æ¬åçå¸å±ï¼JavaScriptæä½DOMï¼
è¿é¶é¨åï¼
æäºä»¥ä¸åºç¡ï¼å°±å¯ä»¥è¿è¡ä¸è¬çéæç½é¡µè®¾è®¡ï¼ä¸è¿å¯¹äºå¤æç页é¢è¿éè¦è¿ä¸æ¥å¦ä¹ ã
3ãJavaScripté«çº§ä¸æå¡å¨åºç¡ï¼æ·±å ¥é¢å对象ç¼ç¨ï¼å ·å¤ç§»å¨ç«¯å¼åè½åï¼å¤çæµè§å ¼å®¹é®é¢ï¼æ·±å ¥å¦ä¹ ES6/ES7è¯æ³è§èï¼åå端å离å¼åææ³ã
4ãæ¡æ¶ä¸æå¡å¨ï¼æ°æ®åºï¼å端å®å ¨çå¦ä¹ ï¼æ·±å ¥äºè§£Nodeï¼æ°æ®åºæä½ï¼åå端å离ææ¯ï¼ååå°åä½å¼åãçæNPMï¼Yarnï¼ï¼Node模åfsï¼httpï¼è·¯ç±ï¼å¤ç请æ±ï¼express4ï¼koaï¼ï¼ææ¡å建websocketæå¡ï¼MongoDB/MySQLæ°æ®åºCRUDï¼Mongooseï¼ï¼ææ¡å¾®ä¿¡å°ç¨åºå¼åï¼ææ¡Vue2.xåºç¡ï¼Vue-routerï¼Vuexççã
5ãReactä¸ç»ä»¶åå¼åï¼æ·±å ¥å¦ä¹ ç»ä»¶åå¼åææ³ï¼äºè§£webpack使ç¨ï¼ææ¡Reactå¼ååºç¡ï¼Hookï¼create-react-appççã
å级é¨åï¼
æäºä»¥ä¸ç¥è¯ï¼å¯¹äºå¤§å¤æ°å°åç½ç«ï¼ä½ åºè¯¥å·²ç»å¯ä»¥ååºè½å¤å·¥ä½ç代ç äºãä½è¦æ³æ为æ´ä¸ä¸çå端ï¼ä½ è¿é继ç»åªåãæ´é«çè¦æ±å¤§æ¦è¿æåæ¹é¢ï¼1ï¼æç»´æ¤ï¼2ï¼å¯æµè¯ï¼3ï¼é«æ§è½ï¼4ï¼ä½æµéï¼ç§»å¨ç«¯ï¼ã
å ¶ä»è¡¥å é¨åï¼
å端项ç®åæ ·é¢ä¸´è½¯ä»¶çå½å¨æçå个ç¯èï¼é¦å æ¯ä»£ç 管çï¼ä½ å¿ é¡»å¦ä¼ä½¿ç¨SvnåGitãå ¶æ¬¡æ¯ä»£ç çæ建ï¼å¦ä»å端代ç æ建已ç»ä¸æ¯ç®åçå缩ä¸ä¸äºï¼éè¦è¿è¡ä¾èµç®¡çã模åå并ãåç§ç¼è¯ï¼æ¯éè¦å¦ä¼ä½¿ç¨GruntãGulpçå端æå»ºå·¥å ·ã
以ä¸å 容åªæ¯ç®å说äºå端å¦ä¹ ç顺åºã对äºå端å¼åï¼åºæ¬å 容就è¿äºäºï¼å¯ä»¥æ ¹æ®èªå·±çå ´è¶£ç±å¥½éæ©æ§å¦ä¹ 以ä¸å 容ã
1ã交äºè®¾è®¡ãå¤§å ¬å¸ä¾ç¶æä¸ä¸äººå£«æè¿äºï¼ä¸è¿ä¸æ交äºçå端ä¸å®ä¸æ¯å¥½å端ãæ¨èãç®çº¦è³ä¸ãã
2ãå端ãåºè¯¥è¯´å端工ç¨å¸å¿ é¡»è³å°äºè§£ä¸é¨å端è¯è¨ï¼ä¸è¿å¦æç±å¥½ä¹å¯æ·±å ¥å¦ä¹ ï¼å¦ä»NodeJså¨å¤§å ¬å¸å·²ç»å¾å°æ®éç使ç¨ï¼æ¨è大家使ç¨å¨Nodeä¸ä½¿ç¨Expressæ¡æ¶åä¸äºå端æå¡çå¼åã
æåï¼æç»éªçç¨åºåé½ç¥éï¼å¦ä¹ ç¼ç¨æææççæ¹å¼å°±æ¯æä½ æå°ä¸ä¸ªé¡¹ç®ç»ï¼è¿æ»å¸¦ç¬çåä¸ä¸¤ä¸ªé¡¹ç®ä¸æ¥ä½ 马ä¸ä¼åç°ææçç¥è¯ç¹å ¨é½è¿å°ä¸èµ·äºï¼ä¸åæ¯åæ£çï¼èæ¯å½¢æä¸ä¸ªæ´ä½äºãé£ç§æè§æ¯ä» ä» æ·±å ¥é»ç ç¥è¯ç¹èä¸åçå®é¡¹ç®ç人æä¸è½ä½ä¼çã ä¸ä¸ªé¡¹ç®å°±æ¯ä¸æ ¹ç»³åå¯ä»¥æ大ççç¥è¯ä¸²å°ä¸èµ·ã
å¦ææ³é»ç¼å®é å¼åçè½åèä¸ä» ä» æ¯è诵æè äºè§£ä¸äºç¥è¯ç¹ï¼å¦ææ³æ为çæ£ç好æï¼é£ä¹ï¼è¿æ¯å项ç®å§ï¼
æ´ä½æ¥ççè¯ï¼Webå端å¼åéè¦å¦ä¹ çå 容è¿æ¯æ¯è¾å¤çãå端æ¯ä¸é¨æ¶µçé¢å¾å¹¿çå¦ç§ï¼èä¸ææ¯æ´æ°è¾å¿«ï¼ä¼ç§çWebå端å¼åå·¥ç¨å¸åºè¯¥å ·å¤å¿«éå¦ä¹ è½åãå¦æ没æå¿«éå¦ä¹ è½åï¼å°±è·ä¸ä¸Webåå±çæ¥ä¼ï¼æ以éè¦ä¸ææåèªå·±ï¼ä¸æå¦ä¹ æ°ææ¯ãæ°æ¨¡å¼ã
C++开源http服务框架WHttpServer
介绍 基于mongoose 7.3版本的源码源码,经过二次封装和修改,分析WHttpServer是源码一个高性能的C++开源HTTP服务框架。该框架支持Linux操作系统,分析macOS系统下需要自行适配库,源码暂时未验证在Windows系统下的分析桌球对战游戏源码运行情况。用户可以通过查看示例文件(HttpExample.cpp、源码HttpExample.h和main.cpp)来了解如何在普通接口、分析大文件上传、源码大文件下载、分析chunk流文件下载等场景中使用。源码 运行操作系统 WHttpServer适用于Linux操作系统。分析在macOS系统上可以运行,源码modernui源码但需要修改CMakeLists.txt文件以适配openssl库。分析Windows系统理论上可以运行,源码但因无测试支持,暂不推荐。 安装教程 将whttp-server-core目录下的文件复制到您的项目中即可完成安装。 接口说明 以下是声控 源码WHttpServer提供的接口及其功能: bool init(int maxEventThreadNum): 初始化线程池,设置最大线程数。 bool startHttp(int port): 开启HTTP服务,指定端口号。 bool startHttps(int port, string certPath, string keyPath): 开启HTTPS服务,指定端口号和证书路径。 bool stop(): 停止HTTP和HTTPS服务。squid 源码 bool run(): 服务运行的核心函数,需要外部循环调用。 bool isRunning(): 检查服务是否正在运行。 void addHttpApi(const string &uri, HttpCbFun fun, int httpMethods): 添加普通的HTTP回调接口,通过不同的httpMethods设置HTTP方法。 void addChunkHttpApi(const string &uri,噼啪源码 HttpCbFun fun, int httpMethods): 为可能超过3M大小的文件上传场景添加数据块HTTP回调接口。 void setHttpFilter(HttpFilterFun filter): 设置HTTP接口的过滤函数,用于过滤不符合条件的请求。 void forceCloseHttpConnection(shared_ptr httpMsg): 强制关闭与客户端的连接。 void addSendMsgToQueue(shared_ptr httpMsg, const char* data, int len): 向客户端发送数据,先放入缓冲区,等待下次循环发送。 void addSendMsgToQueue(shared_ptr httpMsg, string *sendMsg): 与上一个函数的字符串版本。 void httpReplyJson(shared_ptr httpMsg, int httpCode, string head, string body): 向客户端发送JSON格式的响应。 string formJsonBody(int code, string message): 生成JSON字符串。 bool isClientDisconnect(shared_ptr httpMsg): 检查客户端是否主动断开连接。 shared_ptr deQueueHttpChunk(shared_ptr httpMsg): 处理大文件上传时的块数据。 bool addStaticWebDir(const string &dir, const string &header = ""): 添加静态网页目录接口。 mg_http_status_code_str(int status_code): 返回HTTP状态码对应的字符串。 重要数据类型 提供以下两个数据类型: using HttpCbFun = std::function &);: HTTP接口回调函数的类型。 using HttpFilterFun = std::function &): HTTP接口过滤函数的类型。 注意事项 所有HTTP回调函数在子线程中运行,同一回调可能在不同线程中运行,注意线程安全。 run函数内部未加锁,非线程安全,初始化和启动服务的函数调用应在run之前。 添加HTTP接口时,uri应避免重复匹配,否则只执行最后一个匹配的接口。建议直接使用'/'作为uri开头。 示例代码 初始化代码示例。 在main函数中启动服务的示例代码。 HTTP接口回调的示例代码。