caoweiju's blog

个人技术文章记录


  • 首页

  • 归档

  • 标签

  • 分类

使用post表单提交来跳转页面避免url的参数过长被阻断

发表于 2019-01-20 | 分类于 JavaScript

414状态码

在前端中,411 Length Required服务器无法处理客户端发送的不带Content-Length的请求信息,有的时候面对这种情况会比较心碎,基本思路如下:

  1. 压缩参数
  2. 使用post

不过以上并不能很好的处理一些情况,压缩参数这个需要后端配合,使用post的话,如果是接口API的话,还好,如果是页面的话,就需要post跳转页面。

post页面跳转

基本思路是使用表单来提交参数,步骤:

  1. 创建表单
  2. 跳转action来指向跳转页面
  3. 添加表单数据
  4. 插入dom中,设置不可见
  5. 通过submit来提交
阅读全文 »

prefetch和preload的使用

发表于 2019-01-19 | 分类于 HTML

预加载

现在的网络情况虽然很乐观,在我们清楚地知道css/js的加载和解析对于dom解析和渲染的影响:

  1. CSS 不会阻塞 DOM 的解析,但会阻塞 DOM 渲染。
  2. JS 阻塞 DOM 解析,但浏览器会”偷看”DOM,预先下载相关资源,对于keeplive的链接能够进行复用并行下载资源。
  3. 浏览器遇到 script且没有defer或async属性的 标签时,会触发页面渲染,因而如果前面CSS资源尚未加载完毕时,浏览器会等待它加载完毕在执行脚本。

但是如果可以进一步的提前资源的加载岂不是更好,在移动端的开发中预加载可以说有很多的实践;

  1. hybird混合开发是可以在空闲时提前加载下一个页面的空壳webview
  2. 对于一些必经路径的静态的页面也可以在空闲时提前加载
  3. 对于按需加载的资源,也可以在空闲时天前加载

本次主要是考虑关于浏览器中支持的一些预加载和并行加载的处理。

defer和async

当浏览器碰到 script 脚本的时候:

<script src="script.js"></script>

没有 defer 或 async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。

<script async src="script.js"></script>

有 async,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行(异步)。

<script defer src="myscript.js"></script>

有 defer,加载后续文档元素的过程将和 script.js 的加载并行进行(异步),但是 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。

然后从实用角度来说呢,首先把所有脚本都丢到 之前是最佳实践,因为对于旧浏览器来说这是唯一的优化选择,此法可保证非脚本的其他一切元素能够以最快的速度得到加载和解析。

阅读全文 »

npm和yarn的版本lock机制的理解

发表于 2019-01-18 | 分类于 node

node包管理

包是一段可以复用的代码,这段代码可以从全局注册表下载到开发者的本地环境。每个包可能会,也可能不会依赖于别的包。简单地说,包管理器是一段代码,它可以让你管理依赖(你或者他人写的外部代码),你的项目需要这些依赖来正确运行。

为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。

更重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块C和模块D,npm可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错。

阅读全文 »

HTML的演进和html5的自闭合标签规范

发表于 2019-01-18 | 分类于 HTML

html简史

HTML 是 Web 统一语言,这些容纳在尖括号里的简单标签,构成了如今的 Web。1991 年,Tim Berners-Lee 编写了一份叫做 “HTML 标签”的文档,里面包含了大约20个用来标记网页的 HTML 标签。他直接借用SGML的标记格式,也就是后来我们看到的 HTML 标记的格式。本文讲述了 HTML 这门 Web 标记语言的发展简史。

阅读全文 »

linux的开关机脚本执行

发表于 2019-01-18 | 分类于 linux

linux

Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。

90年代初期Linux开始出现的时候,仅仅是以源代码形式出现,用户需要在其他操作系统下进行编译才能使用。后来出现了一些正式版本。目前最流行的几个正式版本有:SUSE、RedHat、Fedora、Debian、Ubuntu、CentOS、Gentoo,等等。用户可根据自己的经验和喜好选用合适的Linux发行版。
原先Linus Torvalds将Linux置于一个禁止任何商业行为的条例之下,但之后改用GNU通用公共许可证第二版。该协议允许任何人对软件进行修改或发行,包括商业行为,只要其遵守该协议,所有基于Linux的软件也必须以该协议的形式发表,并提供源代码。

对于开发人员而言,很多时候都会接触到LINUX系统,甚至要去维护和开发,所以对开机/关机过程需要一定的认识,特别是服务器大部分都是linux系统的时候,我们重启服务、切换服务等都需要保障服务的功能不能中断,这就更需要对linux的运行过程有深入的认识,本文只是记录一小部分过程。

阅读全文 »

javascript操作date的使用须知

发表于 2019-01-18 | 分类于 JavaScript

Date

Date对象用于处理日期与时间。

构造方法

1
2
3
4
new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);

参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
value
代表自1970年1月1日00:00:00 (世界标准时间) 起经过的毫秒数。
dateString
表示日期的字符串值。该字符串应该能被 Date.parse() 方法识别(符合 IETF-compliant RFC 2822 timestamps 或 version of ISO8601)。
year
代表年份的整数值。为了避免2000年问题最好指定4位数的年份; 使用 1998, 而不要用 98.
month
代表月份的整数值从0(1月)到11(12月)。
day
代表一个月中的第几天的整数值,从1开始。
hour
代表一天中的小时数的整数值 (24小时制)。
minute
分钟数。
second
秒数。
millisecond
表示时间的毫秒部分的整数值。

阅读全文 »

微信小程序中的webview的使用的注意事项

发表于 2019-01-17 | 分类于 小程序

小程序

微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。同时提供一系列工具帮助开发者快速接入并完成小程序开发。关于如何注册配置就不多言了,本文主要还是体验了下web-view的功能。

web-view详解

有了这个组件之后,小程序可以很好的嵌入一些页面,可以环境小程序size告急的问题,同样也使开发更加便捷,毕竟小程序开发者基本都对前端开发较为了解。

web-view能力

说再多还是需要去看官方文档,web-view文档,

兼容

首先就需要注意:兼容问题,版本库和对应版本比例

基础库 1.6.4 开始支持,低版本需做兼容处理,
个人类型与海外类型的小程序暂不支持使用。

目前而言,基本80%的用户会升级微信,所以其实不必担心版本问题,官方截止2017-12-01提供的数据也说明88%的用户支持web-view。

阅读全文 »

JSON的正确认识

发表于 2019-01-17 | 分类于 json

JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言:JSON 使用Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
  • JSON 具有自我描述性,更易理解
阅读全文 »

vscode调试node工程

发表于 2019-01-16 | 分类于 tool

node调试

关于node调试,Node.js 包含一个进程外的调试工具,可以通过V8检查器与内置的调试客户端访问。 要使用它,需要以 inspect 参数启动 Node.js,并带上需要调试的脚本的路径;然后会出现一个提示,表明已成功启动调试器,

1
2
3
4
5
6
7
8
9
$ node inspect myscript.js
< Debugger listening on ws://127.0.0.1:9229/80e7a814-7cd3-49fb-921a-2e02228cd5ba
< For help see https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in myscript.js:1
> 1 (function (exports, require, module, __filename, __dirname) { global.x = 5;
2 setTimeout(() => {
3 console.log('world');
debug>

vscode也是使用了node的自带功能,不过不需要在命令来一步一步的调试,这个node提供的调试有点和linux上的gdb调试器类似,使用起来并不是很顺手,所以使用ide还是不错的选择。

阅读全文 »

ssh的理解和使用

发表于 2019-01-16 | 分类于 tool
1
2
ls ~/.ssh/            
config id_rsa id_rsa.pub known_hosts test.crt test.key testenc.key

SSH

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。SSH在Linux Shell中的用法。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY。

阅读全文 »
1…345
weiju.cao

weiju.cao

个人技术文章记录

44 日志
14 分类
52 标签
GitHub E-Mail Weibo
0%
© 2021 weiju.cao