一 内容篇
尽量减少HTTP请求次数
终端用户响应的时间中,有80%用于下载各项内容,这部分时间包括下载页面中的图像、样式表、脚本、Flash等。通过减少页面中的元素可以减少HTTP请求的次数,这是提高网页速度的关键步骤。
减少页面组件的方法其实就是简化页面设计。那么有没有一种方法既能保持页面内容的丰富性又能达到加快响应时间的目的呢?这里有几条减少HTTP请求次数同时又可能保持页面内容丰富的技术。
2024年12月26日
终端用户响应的时间中,有80%用于下载各项内容,这部分时间包括下载页面中的图像、样式表、脚本、Flash等。通过减少页面中的元素可以减少HTTP请求的次数,这是提高网页速度的关键步骤。
减少页面组件的方法其实就是简化页面设计。那么有没有一种方法既能保持页面内容的丰富性又能达到加快响应时间的目的呢?这里有几条减少HTTP请求次数同时又可能保持页面内容丰富的技术。
2024年12月26日
以下以GEE引擎的相关变量讲解,GOM引擎也类似,相同的使用方法<$STR(变量)>
注意:自定义变量不要以P、D、M、N、S、I、G、A开头
传奇变量用法;变量用字母表示,在程序中可以赋任何数据 名称只限于P0-P9,D0-D9
SMALL (变量) (数值) ;测试变量是不是小于指定数值
2024年12月26日
flex布局大家应该已经运用的炉火纯青了,相信在日常开发中大家和我一样不管遇到什么都是flex一把搜哈。直到我遇到grid,才发现有些场景下,不是说flex实现不了而是使用grid能够更加轻松的完成任务。下面拿几个场景和大家分享一下。
2024年12月26日
Flex是Flexible Box的缩写,翻译成中文就是“弹性盒子”,用来为盒装模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。
2024年12月26日
2024年12月26日
vue template 单引号的用法很抓狂啊
(1)template: `<div><hello /><world />
</div>`
(2)template: '<div>hello</div>'
换行不换行不一样呢:(1)是键盘1旁的引号(2)是enter键旁的引号
2024年12月26日
编辑导语:按钮设计是产品设计中的必要模块,合理的按钮设计可以让用户有更清晰的认知,一定程度上提升用户的产品使用体验。本篇文章里,作者便对按钮结构、按钮状态、按钮开发对接技巧等方面做了总结,一起来看一下。
按钮是每个产品设计当中必备的交互元素,可以说是整个Ixd设计当中最为重要的一环。
2024年12月26日
准备:
1、智能网络模块(WIFI模块ESP8266-12S/12F)见底图
2、Arduino IDE 最新版 (1.8.13)
目的:
1、通过固件访问内置网页可以进行重置WIFI密码 (见底图)
2、通过固件内嵌网页可以进行指令测试(通过网页模拟串口发送指令)
void HandleVal()
{
handlenum++;
if(handlenum>1)handlenum=-1;
if(handlenum==0||handlenum==2)return;
String wifis = server.arg("ssid"); //wifi名称
String wifip = server.arg("password"); //wifi密码
String testcmd=server.arg("cmd"); //命令测试
wifis.trim();
if(wifis!=""&&handlenum==1)
{
Serial.println("Received webServer Config info:");Serial.println(wifis); Serial.println(wifip);
WiFi.mode(WIFI_STA);
WiFi.begin(wifis,wifip);//连接成功自动保存
if((WiFi.status()== WL_CONNECTED))
{
strcpy(wifi_ssd,wifis.c_str());//名称复制 wifis WiFi.SSID().c_str()
strcpy(wifi_psw,wifip.c_str());//密码复制 wifip WiFi.psk().c_str()
rom_save();//保存wifi及模式参数 到EEPROM 断电记忆
//ESP.reset();//重启
}
}
testcmd.trim();//去掉前后空格
if(testcmd!=""&&handlenum==1)
{
Serial.print("Recv Web Commond:");Serial.println(testcmd);
doAction_local(testcmd);//与串口一致的执行函数(本地,网络,串口等统一到此中执行减少代码量)
testcmd="";
}
}
/*****************************************************
* 函数名称:handleNotFound()
* 函数说明:响应失败函数
* 参数说明:无
******************************************************/
void handleNotFound() {
digitalWrite(led_PIN, 0);//指示灯LED_BUILTIN
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET) ? "GET" : "POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i = 0; i < server.args(); i++) {
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
led2(500,8);//0.3s-3次循环-余1灭
}
/*****************************************************
* 函数名称:htmlConfig()
* 函数说明:web配置WiFi函数 (当智能配网失败时调用)
* 参数说明:无
* 调用方法 [b]setup[/b]()中进行初始化
******************************************************/
void htmlConfig()
{
WiFi.mode(WIFI_AP_STA);//设置模式为AP+STA双模式
digitalWrite(led_PIN, LOW);
//IPAddress softLocal(192,168,128,1);
//IPAddress softGateway(192,168,128,1);
//IPAddress softSubnet(255,255,255,0);
//WiFi.softAPConfig(softLocal, softGateway, softSubnet);
String apName = ("9I"+(String)ESP.getChipId()); // 2 设置WIFI名称
//const char *softAPName = apName.c_str();
apssid= apName.c_str();
WiFi.softAP(apssid, appassword);
IPAddress myIP = WiFi.softAPIP();
if (MDNS.begin("esp8266")) {//hostString=esp8266
Serial.println("web open url:esp8266.local or 192.168.4.1");
}
server.on("/", handleRoot); //回调 html,请求
server.on("/HandleVal", HTTP_GET, HandleVal); //连接
server.onNotFound(handleNotFound); //请求失败回调函数 (可选)
server.begin();//开启服务器
Serial.println("HTTP server started");
}
2024年12月26日
HTML 框架
框架的作用就是把浏览器窗口划分成多个子窗口。
每个子窗口可以载入各自的HTML文档。
框架(frameset)与页面主体body是同级的关系
1.框架的整体结构
<frameset rows="高度"> ~ </frameset>
<frameset cols="宽度"> ~ </frameset>
<frame src="http://www.haook.cn" name="框架名称">