Monthly Archive 四月 2018

By柏小白

Less-@import 导入选项

//@import 导入选项

--@import 可以至于任何你需要导入的地方
在标准的CSS,@import在规则必须先于所有其他类型的规则。但Less.js不关心
example:
.test(){
    color:#ff6a00;
}
.study{
    .test;
}
@import "studyLess.css";

//output css
@import "studyLess.css";
.study {
  color: #ff6a00;
}

--@import 可以根据文件扩展名不同而用不同的方式处理
如果文件是.css的扩展名,将处理为CSS和@import语句保持原样。
如果为其他的扩展名将处理为less导入。
如果没有扩展名,将会为他添加.less扩展名,作为less导入。
example:
@import "foo";      // foo.less 导入为less文件
@import "foo.less"; // foo.less 导入为less文件
@import "foo.php";  // foo.php  导入为less文件
@import "foo.css";  // 语句保持原样,导入为css文件

以下选项可用于覆盖此行为。
语法:@import (keyword) "filename";
reference: 使用该less文件但是不输出它
inline: 包括在源文件中输出,但是不作处理
less: 将该文件视为less文件,无论其扩展名为什么
css: 将文件视为css文件,无论扩展名为什么
once: 该文件仅可导入一次 (默认)
multiple: 该文件可以多次导入
optional: 当没有发现文件时仍然编译

多个关键字 @import 是允许的,你必须使用逗号分隔关键字:
example: @import (optional, reference) "foo.less";

作者:leona

原文链接:http://www.cnblogs.com/leona-d/p/6306692.html

版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接

By柏小白

artTemplate $data数组循环问题

var data1= [‘文艺’, ‘博客’, ‘摄影’, ‘电影’, ‘民谣’, ‘旅行’, ‘吉他’];
怎么循环到模板中?一定要形如:var data1 = {name:[‘文艺’, ‘博客’, ‘摄影’, ‘电影’, ‘民谣’, ‘旅行’, ‘吉他’]} 吗?

 

模版预编译后得到一个js函数,这个函数接受两个参数,第一个参数是$data, 也就是渲染模版传递的数据,所以可以直接使用

var tpl = '{{each $data}}<a href="javascript:;">{{$value}}</a>{{/each}}'
var  html = template.complie(tpl)(['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']);
// $data就是这个数组。
var tpl = '<a href="javascript:;">{{$data[1]}}</a>';
var  html = template.compile(tpl)(['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']);
// result "<a href="javascript:;">博客</a>"

是可以直接访问的

 

By柏小白

cookie、 sessionStorage 、localStorage之间的区别和使用

1.cookie:存储在用户本地终端上的数据。有时也用cookies,指某些网站为了辨别用户身份,进行session跟踪而存储在本地终端上的数据,通常经过加密。一般应用最典型的案列就是判断注册用户是否已经登过该网站。

2.HTML5 提供了两种在客户端存储数据的新方法:(http://www.w3school.com.cn/html5/html_5_webstorage.asp)…两者都是仅在客户端(即浏览器)中保存,不参与和服务器的通信;

  • localStorage – 没有时间限制的数据存储,第二天、第二周或下一年之后,数据依然可用。
  • 如何创建和访问 localStorage:
  • <script type="text/javascript">
    localStorage.lastname="Smith";
    document.write(localStorage.lastname);
    </script>

    下面的例子对用户访问页面的次数进行计数:

  • 复制代码
    <script type="text/javascript">
    if (localStorage.pagecount){
      localStorage.pagecount=Number(localStorage.pagecount) +1;
      }
    else{
      localStorage.pagecount=1;
      }
    document.write("Visits "+ localStorage.pagecount + " time(s).");
    </script>
    复制代码

     

  • sessionStorage – 针对一个 session 的数据存储,当用户关闭浏览器窗口后,数据会被删除。
  • 创建并访问一个 sessionStorage:
  • <script type="text/javascript">
      sessionStorage.lastname="Smith";
      document.write(sessionStorage.lastname);
    </script>

    下面的例子对用户在当前 session 中访问页面的次数进行计数:

  • 复制代码
    <script type="text/javascript">
    if (sessionStorage.pagecount){
      sessionStorage.pagecount=Number(sessionStorage.pagecount) +1;
      }
    else{
      sessionStorage.pagecount=1;
      }
    document.write("Visits "+sessionStorage.pagecount+" time(s) this session.");
    </script>
    复制代码

     

  • sessionStorage 、localStorage 和 cookie 之间的区别
    共同点:都是保存在浏览器端,且同源的。
  • 区别:cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递;cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。
  • 而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
  • 数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
  • 作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。

localStorage是Storage类型的实例。有以下的几种方法:

①clear():删除所有值。

②getItem(name):根据指定的名字name获取对应的值

③key(index):在指定的数字位置获取该位置的名字。

④removeItem(name):删除由name指定的名值对

⑤setItem(name,value):为指定名字设置一个对应的值

 

localStorage对象可以通过点号调用这些方法。

例:使用方法来存储数据

localStorage.setItem("name","songyuhua");//这样就用localStorage存储了一个名字为name的数据,数据的内容为 “songyuhua"

 

 

使用方法来读取数据

localStorage.getItem("name");//这样就读取了名字为“name”的数据的值。

 

 

有时候,我们需要将数据存储到sessionStorage和localStorage中,这样做的好处有:

1 缓存数据

2 减少对内存的占用

 

但是,storage只能存储字符串的数据,对于JS中常用的数组或对象却不能直接存储。

var obj = { name:'Jim' };

sessionStorage.obj = obj;

localStorage.obj = obj;

 

var arr = [1,2,3];

sessionStorage.obj = arr;

localStorage.obj = arr;

 

 

上面的写法都是不能成功的!但我们可以通过JSON对象提供的parse和stringify将其他数据类型转化成字符串,再存储到storage中就可以了。请看下面的代码。

 

var obj = { name:'Jim' };

var str = JSON.stringify(obj);

 

 

//存入

sessionStorage.obj = str;

 

//读取

str = sessionStorage.obj;

 

//重新转换为对象

obj = JSON.parse(str);

 

 

localStorage也一样,只是和sessionStorage的存储时间不一样。

需要注意的是,JS中的数组本质上也是对象类型,所以上面的代码对数组也是适用的。

 

var arra=[1,2,3,4];

localStorage.setItem('key',JSON.stringify(arra));

var read=JSON.parse(localStorage.getItem('key'));

console.log(read,read.length);