这几天用虚拟机搭了个CentOS7研(wan)究(shua),准备再装个Node环境,作为centOS的纯新手就网上谷歌了篇CentOS安装node的博客跟着做啦,基本挺顺利的,当中有几个小坑(其实根本不算是坑),后面简单说一说…

第1步: 下载node

这虚拟机就是当实验用的,我选择了最新特性版本8.4.0

1
[cyc@localhost download]$ wget https://nodejs.org/dist/v8.4.0/node-v8.4.0.tar.gz

键入上边代码回车,发现报错了,wget未找到,原来之前图方便装的centOS是最小版的,里面并不包含wget,好吧,安装之…

1
[cyc@localhost download]$ yum -y install wget

安装成功后,继续按照上述代码就可以顺利下载node了。

第2步: 解压包

1
[cyc@localhost download]$ tar -xvf node-v8.4.0.tar.gz

第3步: 进入源码目录,执行配置脚本configure

1
2
[cyc@localhost download]$ cd ./node-v8.4.0
[cyc@localhost node-v8.4.0]$ ./configure

咦,又报错了,这次是No acceptable C compiler found!,谷歌之,好吧原来还是老问题,最小版安装的centOS不包含开发者工具,知道问题所在就好解决了,装呗

1
[cyc@localhost node-v8.4.0]$ yum groupinstall "Development tools"

安装完成后,再执行配置文件就没有报错了。

第4步: 执行编译代码

1
[cyc@localhost node-v8.4.0]$ make

这一步感觉时间很久,导致我等了一会后面不想等了,直接提前去吃了午饭,吃完午饭回来看一下好了

第5步: 执行安装

1
[cyc@localhost node-v8.4.0]$ make install

最后一步了,完成后,node安装成功,让我们来验证一下

1
2
3
4
5
[cyc@localhost node-v8.4.0]$ node -v
v8.4.0

[cyc@localhost node-v8.4.0]$ npm -v
5.3.0

完美!接下来就可以更加愉快研(wan)究(shua)了

一些基础Linux命令学习笔记

系统常用命令

命令基本格式

命令 [选项] [参数]

  • ls [选项] [文件或目录]
    • 选项
      • -a 所有文件(包括隐藏)
      • -l 详细信息
      • -d 目录属性
      • -h 人性化显示文件大小
      • -i 显示innode
  • llls -l 的别名

文件处理命令

目录或文件处理命令

  • 建立目录 mkdir -p [目录名]
  • 切换目录 cd [目录]
  • 查询所在目录位置 pwd
  • 删除空目录(一般不用) rmdir [目录名]
  • 删除文件或目录 rm [选项] [文件或目录]
    • 选项
      • -r 删除目录
      • -f 强制
  • 复制文件或目录 cp [选项] [源文件或目录] [目标目录]
    • 选项
      • -r 复制目录
      • -p 连带文件属性复制
      • -d 若源文件是链接文件,则复制链接属性
      • -a 相当于-pdr
  • 剪切或改密命令 mv [原文件或目录] [目标目录]
常用类型目录
  • / 根目录
  • /bin 命令保存目录
  • /boot 启动目录
  • /dev 设备文件
  • /etc 配置文件
  • /home 普通用户家目录
  • /lib 系统库
  • /mnt 挂载目录
  • /root 超级用户的家目录
  • /tmp 临时目录
  • /sbin 命令保存目录(超级用户)
  • /proc 内存的过载点
  • /sys 内存的过载点
  • /usr 系统软件资源
  • /var 系统相关文档内容

链接命令

  • 生成链接文件 ln [选项] [目标文件]
    • 选项
      • -s 创建软链接
    • 注意:不在同一目录创建软链接时,目标文件需要写绝对路径
硬链接特征
  • 拥有相同的i节点和存储block块
  • 可通过i节点识别
  • 不能跨分区
  • 不能针对目录是用
软链接特征
  • 类似windows快捷方式
  • 拥有自己的i节点和block块,但数据块种只保存原文件的文件名和i节点好,并没有时机的文件数据
  • lrwxrwxrwx
  • 修改任意文件,另一个都改变
  • 删除原文件,软链接不能使用

文件搜索命令

文件名搜索命令locate

  • locate 文件名
    • 在后台数据库种进行搜索,数据库大概每天自动更新一次,也可以手动用 updatedb 更新
    • locate的配置文件 /etc/updatedb.conf
      • PRUNE_BIND_MOUNTS 是否开启搜索限制
      • PRUNEFS 搜索时,不搜索的文件系统
      • PRUNENAMES 搜索时,不搜索的文件类型
      • PRUNEPATHS 搜索时,不搜索的路径

命令搜索命令whereis/which

  • whereis 命令名
    • 搜索命令所在路径及帮助文档所在地址
    • 选项:
      • -b 只查找可执行文件
      • -m 只查找帮助文件
  • which 命令名
    • 搜索命令所在的路径及别名

文件搜索命令find

  • find [搜索范围] [搜索条件]
    • 搜索范围
    • 搜索条件:选项+条件
      • 选项:
        • 搜索选项:
          • -name 按照文件名搜索
          • -iname 不区分大小写
          • -user 按照所有者搜索
          • -nouser 按照没有所有者的文件
          • -mtime 按照修改文件内容的时间搜索
          • -atime 按照文件访问时间搜索
          • -ctime 按照改变文件属性时间搜索
          • -size 按照文件大小查找
          • -inum 按照i节点查找
        • 其他:
          • -a 逻辑与 and
          • -o 逻辑或 or
          • -exec 命令 {} \; 对搜索结果执行操作

字符串搜索命令grep

  • grep [选项] 字符串 文件名
    • 在文件当中匹配符合条件的字符串
    • 选项:
      • -i 忽略大小写
      • -v 排除指定字符串

find命令与grep命令的区别

  • find命令:在系统中搜索符合条件的文件,使用通配符,完全匹配
  • grep命令:在文件中搜索符合条件的字符串,使用正则表达式,包含匹配

帮助命令

  • man 命令
    • 获取指定命令的帮助
    • man的级别
      • 1 查看命令的帮助
      • 2 查看可被内核调用的函数的帮助
      • 3 查看函数和函数库的帮助
      • 4 查看特殊文件的帮助(主要是/dev目录下的文件)
      • 5 查看配置文件的帮助
      • 6 查看游戏的帮助
      • 7 查看其他杂项的帮助
      • 8 查看系统管理员可用的帮助
      • 9 查看和内核相关文件的帮助
    • man -级别 命令
      • 查看该级别命令的帮助
    • man -f 命令
      • 查看命令拥有哪个级别的帮助
      • 相当于 whatis 命令
    • man -k 命令
      • 查看和命令相关的所有帮助
      • 相当于 apropos 命令
  • 其他帮助命令
    • 选项帮助
      • 命令 --help 获取命令选项的帮助
    • shell内部命令帮助
      • help shell内部命令 获取shell内部命令的帮助
      • 可以用 whereis 命令 确定是否是shell内部命令
    • 详细命令帮助info
      • info 命令
        • -回车 进入子帮助页面(带有*号标记)
        • -u 进入上层页面
        • -n 进入下一个帮助小节
        • -p 进入上一个帮助小节
        • -q 退出

压缩与解压缩命令

  • 常用压缩格式
    • .zip
    • .gz
    • .bz2
    • .tar.gz
    • .tar.bz2
  • .zip格式
    • zip 压缩文件名 源文件 压缩文件
    • zip -r 压缩文件名 源目录 压缩目录
    • unzip 压缩文件 解压缩
  • .gz格式
    • gzip 源文件 压缩为.gz格式,源文件会消失
    • gzip -c 源文件 > 压缩文件 压缩为.gz格式,源文件保留
    • gzip -r 目录 压缩目录下所有的子文件,但是不能压缩目录
    • gzip -d 压缩文件 解压缩
    • gunzip 压缩文件 解压缩
  • .bz2格式
    • bzip2 源文件 压缩为.bz2格式,不保留源文件
    • bzip2 -k 源文件 压缩为.bz2格式,保留源文件
    • bzip2命令不能压缩目录
    • bzip2 -d 压缩文件 解压缩,-k保留压缩文件
    • bunzip2 压缩文件 解压缩,-k保留压缩文件
  • .tar.gz格式和.tar.bz2格式
    • tar命令
      • tar -cvf 打包文件名 源文件 打包命令
        • 选项
          • -c 打包
          • -v 显示过程
          • -f 指定打包后的文件名
      • tar -xvf 打包文件名 解打包命令
        • 选项
          • -x 解打包
    • 打包压缩
      • tar -zcvf 压缩包名.tar.gz 源文件
        • 选项
          • -z 压缩为.tar.gz格式
      • tar -jcvf 压缩包名.tar.gz 源文件
        • 选项
          • -j 压缩为.tar.bz2格式
    • 解压缩打包文件
      • tar -zxvf 压缩包名.tar.gz 后面可以跟 -C 指定解压缩位置
        • 选项
          • -zx 解压缩.tar.gz格式
      • tar -jxvf 压缩包名.tar.gz 后面可以跟 -C 指定解压缩位置
        • 选项
          • -jx 压缩为.tar.bz2格式

关机和重启命令

  • shutdown [选项] 时间 比较安全,推荐使用
    • 选项:
      • -c 取消前一个关机命令
      • -h 关机
      • -r 重启
  • 其他关机命令
    • halt
    • poweroff
    • init 0
  • 其他重启命令
    • reboot
    • init 6
  • 系统运行级别
    • 级别
      • 0 关机
      • 1 单用户
      • 2 不完全多用户,不含NFS服务
      • 3 完全多用户
      • 4 未分配
      • 5 图形界面
      • 6 重启
    • cat /etc/inittab 修改系统默认运行级别
    • runlevel 查询系统运行级别
  • logout 退出登录

其他常用命令

挂载命令

  • mount 查询系统中已经挂载的设备
  • mount -a 依据配置文件/etc/fstab的内容,自动挂载
  • mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
    • -t 文件系统 加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
    • -o 特殊选项 可以指定挂载的额外选项
      • atime/noatime 更新访问时间/不更新访问时间
      • async/sync 异步/同步
      • auto/noauto 自动/手动
      • defaults 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项
      • exec/noexec 执行/不执行
      • remount 重新花在已经挂载的文件系统,一般用于指定修改特殊权限
      • rw/ro 读写/只读
      • suid/nosuid 具有SUID权限/不具有SUID权限
      • user/nouser 允许普通用户挂载/不允许普通用户挂载
      • userquota 写入代表文件系统支持用户磁盘配额,默认不支持
      • grpquota 写入代表文件系统支持组磁盘配额,默认不支持
  • umount 设备文件名或挂载点 卸载命令
  • 光盘挂载
    • mkdir /mnt/cdrom 建立挂载点
    • mount [-t iso9660] /dev/sr0 /mnt/cdrom 挂载光盘
    • umount /mnt/cdrom 卸载光盘
  • U盘挂载
    • fdisk -l 查看U盘设备文件名
    • mount -t vfat /dev/sdb1 /mnt/usb/ 挂载U盘(注意:Linux默认不支持NTFS文件系统)

用户登录查看和用户交互命令

  • w [用户名] 查看登录用户信息
  • who [用户名] 查看登录用户(少量)信息
  • last 查看当前登录和过去登录的用户信息
  • lastlog 查看所有用户的最后一次登录时间

shell命令

shell概述

  • vi /etc/shells Linux支持的shell

脚本执行方式

输出命令

echo [选项] [输出内容]

  • 选项:
    • -e 支持反斜线控制的字符转换

编写脚本

1
2
3
4
5
6
7
8
9
10
11
$ vim hello.sh

# 进入编辑界面
# --------------------

#!/bin/Bash
# The Frist Program

echo -c "\e[1;34m Hello World \e[0m"

:wq

脚本执行方法

  • 赋予执行权限,直接运行
    1. chmod 755 hello.sh 赋予权限
    2. ./hello.sh 运行
  • 通过Bash调用执行脚本
    • bash hello.sh

Bash的基本功能

命令别名与快捷键

  • 别名
    • alias 查看默认已经生效的别名
    • alias 别名='原命令' (临时)设置别名
    • vi ~/.bashrc 写入环境变量配置文件使别名永久生效
    • unalias 别名 (临时)删除别名
  • 命令生效顺序
    1. 执行用绝对路径或相对路径执行的命令
    2. 执行别名
    3. 执行Bash的内部命令
    4. 执行按照$PATH幻境变量定义的目录查找顺序找到的第一个命令
  • 常用快捷键
    • ctrl+c 强行终止当前命令
    • ctrl+l 清屏
    • ctrl+a 光标移动到命令行首
    • ctrl+e 光标移动到命令行尾
    • ctrl+u 从光标所在的位置删除到行首
    • ctrl+z 把命令放入后台
    • ctrl+r 在历史命令中搜索

历史命令

  • history [选项] [历史命令保存文件] 历史命令
    • 选项
      • -c 清空历史命令
      • -w 把缓存中的历史命令写入历史命令保存文件~/.bash_history
  • 历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
  • 历史命令的调用
    • 使用上下箭头调用以前的历史命令
    • 使用 !n 重复执行第n条历史命令
    • 使用 !! 重复执行上一条命令
    • 使用 !字符串 重复执行最后一条以该字符串开头的命令
  • 命令和文件补全
    • 在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按tab键就会自动进行补全

输出(输入)重定向

标准输入输出
设备设备文件名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/sdtout1标准输出
显示器/dev/sdterr2标准错误输出
输出重定向
类型符号作用
标准输出重定向命令 > 文件以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中
标准输出重定向命令 >> 文件以追加的方式,把命令的正确输出输出到指定的文件或设备当中
标准错误输出重定向错误命令 2>文件以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中
标准错误输出重定向错误命令 2>>文件以追加的方式,把命令的错误输出输出到指定的文件或设备当中
正确和错误输出同时保存命令 > 文件 2>&1以覆盖的方式,把正确和错误输出都保存到同一个文件当中
正确和错误输出同时保存命令 >> 文件 2>&1以追加的方式,把正确和错误输出都保存到同一个文件当中
正确和错误输出同时保存命令 &>文件以覆盖的方式,把正确和错误输出都保存到同一个文件当中
正确和错误输出同时保存命令 &>>文件以追加的方式,把正确和错误输出都保存到同一个文件当中
正确和错误输出同时保存命令>>文件1 2>>文件2把正确输出追加到文件1中,把错误输出追加到文件2中

输入重定向

  • wc [选项] [文件名] 统计
    • 选项
      • -c 统计字节数
      • -w 统计单词数
      • -l 统计行数
  • 命令 < 文件把文件作为命令的输入
  • 命令 << 标识符
    • 把到标识符为止的内容作为命令的输出

多命令顺序执行

多命令执行符
  • 命令1; 命令2
    • 多个命令顺序执行,命令之间没有任何逻辑联系
  • 命令1 && 命令2
    • 逻辑与
    • 当命令1正确执行,则命令2才会执行
    • 当命令1执行不正确,则命令2不会执行
  • 命令1 || 命令2
    • 逻辑或
    • 当命令1执行不正确,则命令2才会执行
    • 当命令1正确执行,则命令2不会执行
管道符
  • 命令1 | 命令2
    • 命令1的正确输出作为命令2的操作对象

Shell中特殊符号

通配符
  • ?
    • 匹配一个任意字符
  • *
    • 匹配0个或任意多个任意字符,也就是可以匹配任何内容
  • []
    • 匹配中括号中任意一个字符(例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c)
  • [-]
    • 匹配中括号中任意一个字符,-代表一个范围(例如:[a-z]代表匹配一个小写字母)
  • [^]
    • 逻辑非,表示匹配不是中括号内的一个字符(例如:[^0-9]代表匹配一个不是数字的字符)
其他特殊符号
  • '' 单引号
    • 单引号中所有的特殊符号都没有特殊含义
  • "" 双引号
    • 在双引号中特殊字符没有特殊含义
    • 例外:
      • "$" 调用变量的值
      • "`" 引用命令
      • "\" 转义符
  • `` 反引号
    • 反引号括起来的内容是系统命令,在bash中会先执行它。和$()作用一样。推荐使用$(),因为反引号非常容易看错
  • $()
    • 和反引号作用一样,用来引用系统命令
  • #
    • 在shell脚本中,#开头的行代表注释
  • $
    • 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式
  • \ 转义符
    • 跟在\后面的特殊符号将失去特殊含义,变为普通字符

个人常用Git命令总结,持续更新…

创建版本库

1
2
$ git clone <url>        # 克隆远程版本库
$ git init # 初始化本地版本库

修改和提交

1
2
3
4
5
6
7
8
9
$ git status                           # 查看状态
$ git diff # 查看变更内容
$ git add . # 跟踪所有改动过的文件
$ git add <file> # 跟踪指定文件
$ git mv <old> <new> # 文件改名
$ git rm <file> # 删除文件
$ git rm --cached <file> # 停止跟踪文件但不删除
$ git commit -m "commit message" # 提交所有更新过的文件
$ git commit --amend # 修改最后一次提交

查看提交历史

1
2
3
$ git log                 # 查看提交历史
$ git log -p <file> # 查看指定文件的提交历史
$ git blame <file> # 以列表方式查看指定文件的提交历史

撤销

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ git reset --hard HEAD         # 撤销工作目录中所有未提交文件的修改内容
# --hard要慎用
$ git reset HEAD^ # 回退所有内容到上一个版本
$ git reset HEAD^ <file> # 回退指定文件的版本到上一个版本
$ git reset –soft HEAD~3 # 向前回退3个版本
$ git reset –hard origin/master # 将本地的状态回退到和远程的一样
$ git reset <commit> # 回退到某个版本

$ git commit --amend # 修改最后一次提交。
# 用于修改上一次的提交信息,或漏提交文件等情况。
$ git checkout -- <file>
$ git checkout HEAD <file> # 撤销指定的未提交文件的的修改内容

$ git revert <commit> # 撤销指定的提交
$ git revert HEAD # 回退到上一次提交的状态
# 按照某一次的commit完全反向的进行一次commit
# 代码回滚到上个版本,并提交git

分支与标签

1
2
3
4
5
6
7
8
9
10
11
12
$ git branch                                      # 显示所有本地分支
$ git checkout <branch/tag> # 切换到指定分支或标签
$ git branch <new-branch> # 创建新分支
$ git branch -d <branch> # 删除本地分支
$ git branch (-m|-M) <old branch> <new branch> # 删除本地分支
# -M: 强制重命名
# 如重命名远程分支:
# 删除远程待重命名分支,重新push本地新分支
$ git checkout -b <new-branch> <existing-branch> # 基于已有分支,创建新分支
$ git tag # 列出所有本地标签
$ git tag <tag-name> # 基于最新提交创建标签
$ git tag -d <tag-name> # 删除标签

release 基本流程

1
2
3
4
$ git status                           # 查看状态
$ git tag <tag-name> # 基于最新提交创建标签
$ git push --tags # 上传所有标签
$ release # 发行版本(需事先安装release包 https://github.com/zeit/release)

合并

1
2
$ git merge <branch>          # 合并指定分支到当前分支
$ git rebase <branch> # 衍合指定分支到当前分支

远程操作

1
2
3
4
5
6
7
8
$ git remote -v                            # 查看远程版本库信息
$ git remote show <remote> # 查看指定远程版本库信息
$ git remote add <remote> <url> # 添加远程版本库
$ git fetch <remote> # 从远程库获取代码
$ git pull <remote> <branch> # 下载代码及快速合并
$ git push <remote> <branch> # 上传代码及快速合并
$ git push <remote> :<branch/tag-name> # 删除远程分支或标签
$ git push --tags # 上传所有标签

Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。Less 可以运行在 Node 或浏览器端。

编译工具

  • Koala
  • node.js
  • 浏览器端编译

LESS语法

申明编码格式

头部仍然不能忘记申明编码格式
1
@charset "utf-8";

注释

1
2
/*这种形式会被编译保留*/
//这种形式不会被编译保留

变量

变量以@[变量名]:[value]的形式申明
1
2
3
4
5
6
7
// 申明变量
@fontColor: red;

// 使用变量
.word {
color: @fontColor;
}

变量也有作用域,局部变量可写在混合模式的 { } 中间

混合Mixin

不带参数的混合:和普通class写法类似

不带参数的混合变量也可以加括号,此时编译的时候不会生成该class的样式

1
2
3
4
5
6
7
8
9
.border {
border: 5px solid green;
}
.box {
width: 100px;
height: 100px;

.border;//不需要加括号
}

带参数的混合

1
2
3
4
5
6
7
8
9
.border(@border_width) {
border: @border_width solid green;
}
.box {
width: 100px;
height: 100px;

.border(30px);
}

带参数的混合还可设定默认值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.border(@border_width:10px) {
border: @border_width solid yellow;
}
.box {
width: 100px;
height: 100px;

.border(30px);
}
.box2 {
width: 200px;
height: 200px;

.border();//默认用10px
}

匹配模式

相当于JS中的 if,满足条件后才能匹配,例如下面代码:

用LESS画一个三角形
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
.triangle(top, @width: 5px, @color: red ) {
// 关键词为top时用这个样式(三角朝上)
border-width: @width;
border-color: transparent transparent @color transparent;
border-style: dashed dashed solid dashed;
}
.triangle(bottom, @width: 5px, @color: red ) {
// 关键词为bottom时用这个样式(三角朝下)
border-width: @width;
border-color: @color transparent transparent transparent;
border-style: solid dashed dashed dashed;
}
.triangle(left, @width: 5px, @color: red ) {
// 关键词为left时用这个样式(三角朝左)
border-width: @width;
border-color: transparent @color transparent transparent;
border-style: dashed solid dashed dashed;
}
.triangle(right, @width: 5px, @color: red ) {
// 关键词为right时用这个样式(三角朝右)
border-width: @width;
border-color: transparent transparent transparent @color;
border-style: dashed dashed dashed solid;
}
.triangle(@_, @width: 5px, @color: red ) {
// 公用样式,参数名为"@_"(固定)
// 且原先的变量"@width" "@color"必须带上
width: 0;
height: 0;
overflow: hidden;
}

.down-icon {
.triangle(bottom,10px);
}

运算

任何数字、颜色或者变量都可以参与运算(+ - * /),运算应该被包裹在括号中

1
2
3
4
5
6
@font-big: 20px;

.word {
font-size: @font-big + 2;
//只要一个带单位就行
}

嵌套规则

  • 一般嵌套
  • 两种特殊嵌套
    • &对伪类使用: hover, focus
    • &对链接的使用: 例如 &-item

另外,嵌套最好不要超过三层

1
2
3
4
5
6
7
<ul class="list">
<li><a href="#">条目1</a><span>xxxx-xx-xx<span></li>
<li><a href="#">条目2</a><span>xxxx-xx-xx<span></li>
<li><a href="#">条目3</a><span>xxxx-xx-xx<span></li>
<li><a href="#">条目4</a><span>xxxx-xx-xx<span></li>
<li><a href="#">条目4</a><span>xxxx-xx-xx<span></li>
</ul>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
.list {
width: 600px;
margin: 30px auto;
padding: 0;
list-style: none;

li {
height: 30px;
line-height: 30px;
margin-bottom: 5px;
}

a {
float: left;

// 和sass一样,&代表他的上一层选择器
&:hover {
color:red;
}
}

span {
float: left;
}
}

@arguments变量

@arguments包含了所有传递进来的参数
如果你不想单独处理每一个参数的话就可以像下面这样写:

1
2
3
4
5
6
7
8
9
10
.border_arg(@width: 30px, @color: red, @style: solid) {
border: @arguments;
}

.box {
width: 200px;
height: 100px;

.border_arg(40px);
}

避免编译

有时候我们可能需要

  1. 输出一些不正确的CSS语法
  2. 使用一些LESS不认识的专有语法

我们可以在字符串前加上一个~'[code]',例如:

1
2
3
.box {
width: ~'calc(300px-30px)';
}

!important关键字

  • 会为该混合样式中的所有样式带上!important关键字
  • 一般在调试的时候使用

导入

导入一个LESS文件
1
2
//导入一个reset.less,可以不加扩展名
@import "reset";
导入一个CSS文件
1
2
//导入一个reset.css
@import(less) "reset.css";