以下内容若有问题烦请即时告知我予以修改,以免误导更多人。
本次内容:cookie、Require、数据交互前导
1. cookie
数据类型:string
- 需在服务器环境中
- 不安全
过期时间(expires):默认关闭浏览器时清空
session的常见实现形式是会话cookie(session cookie),即未设置过期时间的cookie;
平常所说的cookie主要指的是另一类cookie——持久cookie(persistent cookies)。1
2
3
4
5<script>
var oDate = new Date();
oDate.setDate(oDate.getDate()+3); // 延迟三天清空
document.cookie = 'expires=' + oDate;
</script>容量小,4k左右
- 返回的数据类型是字符串,使用时需转化
内部能访问外部cookie,外部不能访问内部cookie
path统一设置到根目录document.cookie = 'name=value;path=/';
domain 设置域名访问
eg: baidu
baidu.comdomain=baidu.com
需在上一级域名设置domain
fanyi.baidu.comsetCookie
baike.baidu.comgetCookie
有缓存
封装cookie.js
1 | <script> |
2. 模块化
sea.js && require.js
sea.js | require.js |
---|---|
采用CMD(通用模块定义,依赖就近) | 采用AMD(异步模块定义,依赖前置) |
AMD 和 CMD 的区别有哪些? - 玉伯的回答 - 知乎
3. Require.js
好处
- 解决命名冲突
- 解决文件彼此依赖
- 自动引入js
- 异步加载,可维护性高
只发送一个请求,最终引用文件命名为init.js
或者<script src="require.js" data-main="init"></script>
(1)定义模块
r1.js1
2
3
4
5
6
7
8
9
10
11
12<script>
define(function(require, exports, module) {
// 引入模块,导出模块,批量导出
exports.a = 1;
// console.log(1);
// return {a:1, b:2};
});
</script>
(2)使用模块
1 | <script> |
1 | <script> |
(3)引用模块
这里的模块依赖其实应该一开始就写好。
1 | <script> |
因专用于js,require时可省略类型后缀 ‘js/r1.js’ -> ‘js/r1’
Require的使用结构一般如下
exp1.html放于主目录
js文件放在js文件夹下
exp1.html1
2
3
4
5
6
7...
...
<script src="js/require.js" data-main="js/init"></script>
...
...
init.js
1 | <script> |
exp1.js
1 | <script> |
r1.js1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<script>
define(function(require) {
var move = require('move');
...
...
return function(yyy) {
...
...
move(aaa, {opacity: 1});
}
})
</script>
4. 数据交互
form提交数据
缺点:(1)会刷新页面 (2)不能取出数据
想要提交数据须有
- action 提交的地址
<form action=''></form>
- name 数据名称
<input name="user.tel" />
- value 数据
input.value
提交方式
get(默认) 容量32K左右 不安全,有缓存
好处:(1)分享 (2)收藏post 容量1G左右 相对安全,没有缓存
缓存(cache)
对于浏览器而言,相同的地址只会访问一次
ajax(Asynchronous JavaScript and XML,异步JavaScript和XML)
- 需在服务器环境中
- 编码需一致
- url若为文件名,可不写文件名后缀
- 返回的数据类型是字符串,使用时需转化
- 缓存(get方法)
浏览器清除缓存ctrl+F5
或ctrl+alt+delete
防止IE缓存
路径+随机因子
(1)'路径?t=' + Math.random();
(2)'路径?t=' + oDate.getTime();
eg:var URL = 'user.php?act=login&user=' + logU.value + '&pass=' + logP.value + '&t=' + new Date().getTime();
5. eval的替代用法
1 | <script> |
6. 数据交互时输入中文问题
中文转换URL编码 encodeURIComponent(str)
解编码 decodeURIComponent(str)
IE兼容写法1
2
3
4
5<script>
var URL = 'user.php?act=login&user=' + encodeURIComponent(logU.value) + '&pass=' + encodeURIComponent(logP.value) + '&t=' + new Date().getTime();
</script>
更多内容可以订阅本人微信公众号,一起开启前端小白进阶的世界!