前端每周学习分享——第1期

1. 项目工具相关

1.1. npm包管理器

npm是Node.js的包管理工具,用于管理javascript包。
npm由三个部分组成:网站、注册表、命令行工具。
npm太慢,还可以使用淘宝镜像cnpm。
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install 切换到项目目录后下载所有依赖

npm 指令:
npm version
npm install npm@latest -g 给npm项目添加依赖模块
npm [install/i] [package_name]
npm uninstall
npm init webpack my-project
npm list 根据 package.json 查询模块状态
npm run [npm脚本名]

npm与vue:

npm安装vue-cli:npm install -g @vue/cli
使用vue创建一个项目:vue create my-project

package.json 是 npm仓库的描述文件, 其中包括项目依赖, 脚本执行, 版本号,依赖环境等说明.

npm 允许在package.json文件里面,使用scripts字段定义脚本命令。
详见阮一峰npm scripts 使用指南

1.2. git基本操作

git init 初始化仓库
git remote add [-t <branch>] [-m <master>] <name> <url> 从url地址添加远程仓库并命名为name。
git push/pull 远程仓库名 本地分支名:远程分支名 推送、拉取
(如果config配置文件中只有一个远程仓库一个分支,则可以省略指定名字)

git add .添加文件到暂存区(stage)
git commit -m "describ" 将暂存区内容提交到分支
git status
git diff
git log查看提交历史(历史版本)
git log --graph查看分支合并图
git reset --hard HEAD^

git checkout -- benchmarks.rb取消对指定文件的修改
git reset HEAD benchmarks.rb取消已暂存的文件
$ git checkout -b dev 创建并切换到dev分支
git branch 查看当前本地分支
git branch -r 查看远程分支
git branch dev创建dev分支
git branch -d dev删除dev分支
git merge dev合并dev分支到当前分支

git rebase
git stash将工作储藏到栈上,储藏后工作目录是干净的
git stash list 查看储藏列表
git stash apply <储藏名>将储藏恢复到工作区

1.3. git多仓库、多身份

要管理多仓库、多身份,首先就要认识git的配置。
使用git config 配置git,它会修改相应的配置文件。

$ git config --global user.name "John Doe"  
$ git config --global user.email johndoe@example.com  
文件位置 git config 选项 生效范围
/etc/gitconfig --system 对系统上所有用户及他们所拥有的仓库都生效
~/.gitconfig --global 对当前用户生效
.git/config --local 对当前仓库有效

使用git config --help 查看所有的可配置项。

一个配置文件的大致格式如下:
gitConfig
给[remote "origin"]设置多个url就可以使用"origin"仓库名同时提交/拉取多个仓库。
如果管理的仓库很多,一个个手动配置比较麻烦,可以利用初始模板+钩子函数+本地配置来做一个git自动化小工具来自动生成配置文件。详见:文章github地址

1.4. SASS基本使用

Sass css预处理器 文件后缀名.sass

  • 插值 #{}
  • 变量$
    变量需嵌入字符串时,要放在#{}中,如#{$side}
    支持6种数据类型:数字、字符串、颜色、布尔值、空值、值列表
  • 计算
    如:right: $var * 10%;
    颜色运算时分段运算,rgba运算必须alpha相同。
  • 嵌套
    支持选择器嵌套和属性嵌套(-前加冒号)
    如属性border-color可写成:
        sass
        border: {
          color: red;
        }
    
  • 引用父元素&
  • @extend样式继承
    例如:
    .error {
      border: 1px #f00;
      background-color: #fdd;
    }
    .seriousError {
      @extend .error;
      border- 3px;
    }
    
  • @mixin混入指令
    混入指令可以定义一个代码段的名称、参数。
    @mixin 名称 (arguments)
    @mixin sexy-border($color, $width) {
      border: {
        color: $color;
             $width;
        style: dashed;
      }
    }
    
  • @include 引用混合样式
    p { @include sexy-border(blue, 1in); }

1.5. BEM

BEM是CSS的书写规范。BEM Tencent github wiki
组件之间的完全解耦,不会造成命名空间的污染。
BEM 命名会使得 Class 类名变长,但经过 gzip 压缩后这个带宽开销可以忽略不计。
BEM代表 “块(block),元素(element),修饰符(modifier)”。


  • 块的CSS类名会加一些前缀( ui-),这些前缀在CSS中有类似命名空间 的作用。
    一个块的命名规则如下:
    CSS中只能使用类名(不能是ID)。
    每一个块名应该有一个命名空间(前缀)
    每一条CSS规则必须属于一个块。
  • 元素
    一个块中元素的类名必须用父级块的名称作为前缀。
  • 修饰符
    使用单下划线来连接一个修饰符。

在选择器中,由以下三种符号来表示扩展的关系:

-   中划线 :仅作为连字符使用,表示某个块或者某个子元素的多单词之间的连接记号。
__  双下划线:双下划线用来连接块和块的子元素
_   单下划线:单下划线用来描述一个块或者块的子元素的一种状态
type-block__element_modifier

1.6. 其他工具

  • cmder
    在windows中使用的Linux终端,开发 必 备。
  • 图床工具
    自动把本地图片转换成网络链接的一类工具,云服务器+一键上传工具。
    使用了图床工具PicGo, 算得上一款比较优秀的图床工具。它是一款用 Electron-vue 开发的软件,可以支持微博,七牛云,腾讯云COS,又拍云,GitHub,阿里云OSS,SM.MS,imgur 等8种常用图床,功能强大,简单易用。
  • markdown编辑器:Typora
    界面清爽,功能齐全,支持图片拖拽。
  • google浏览器插件:Momentum
    Replace new tab page with a personal dashboard featuring to-do, weather, and inspiration

2.阅读列表

3.代码相关

3.1. flex弹性布局

使用display:flex|inline-flex将元素申明为弹性容器,flex是块级,inline-flex是行内。
flex container
属性的global values 有 inherit initial unset,下表近列出Default value

属性 意义
flex-direction row column row-reverse column-reverse 决定主轴方向
flex-wrap nowrap wrap wrap-reverse(向上换行) 决定主轴上的换行方式
flex-flow || ; 简写,默认为row nowrap
justify-content start center end space-between space-around strench 主轴上的对齐方式
align-items start center end strench baseline 侧轴上的对齐方式
align-content start center end space-between space-around strench 多主轴间的对齐方式

flex item

属性 意义
order 定义项目的排列顺序
align-self auto start center end strench baseline 覆盖容器的align-items属性,决定当前项目的侧轴对齐方式
flex-grow 项目的放大比例,默认0(不放大)
flex-shrink 项目的缩小比例,默认1
flex-basis | auto ; 项目在主轴上的初始大小(基准)
flex flex-grow, flex-shrinkflex-basis的简写

3.2. 固定与自适应

需要定长定宽的组件,要考虑内容溢出。
自适应的组件,要考虑子元素变化时组件高宽变化的影响,比如当某些子元素加载后更改了宽高,就会使组件闪烁。
比如常用的单行文本:

    .title{

    white-space: nowrap;

    overflow: hidden;

    text-overflow: ellipsis;

    }

3.3. 去除小程序button组件的边框

因为源码里button的边框不是直接用border实现的。
使用 button::after{ border: none; }
组件边框的实现方法有多种,如border、outline、box-shadow、底层遮罩

3.4.CSS变量

css变量使css更加灵活,能更方便的做响应式布局。

变量表示,sass用$,less用@,官方css用--。
变量的声明:

body {
  --fontColor:gray;
  --bar: "hello ";
}

读取变量,使用var()函数:
变量值只能用作属性值,不能用作属性名

.text{
	color:var(--fontColor,black);
	content:var(--bar)'world'
}
  • 如果变量值是一个字符串,可以与其他字符串拼接。
  • 如果变量值是数值,不能与数值单位直接连用,可用calc()函数来连接。
  • 变量带有单位值,不能写成字符串。
    变量的作用域就是它所在选择器的有效范围,变量多次声明读取时的优先级与css的层叠规则一致。
    js操作css变量
// 设置变量
document.body.style.setProperty('--primary', '#7F583F');

// 读取变量
document.body.style.getPropertyValue('--primary').trim();
// '#7F583F'

// 删除变量
document.body.style.removeProperty('--primary');
原文地址:https://www.cnblogs.com/mthz/p/week1.html