SCSS学习笔记

news2024/11/15 15:59:48

文章目录

  • 1.安装scss
  • 2.选择器嵌套
  • 3.属性嵌套
  • 4.父选择器&
  • 5.变量
    • 5.1变量的规范
    • 5.2变量的作用域
    • 5.3给变量设置默认值(!default)
  • 6数据类型
  • 7.运算符
  • 8.插值语法
  • 9.流程控制语句
    • 9.1 条件语句
    • 9.2循环语句
      • 9.2.1@for
      • 9.2.2@each
      • 9.2.3@while
  • 10@import
    • 10.1引入scss不编译
    • 10.2嵌套引入scss
  • 11.mixin
    • 11.1语法
    • 11.2mixin中定义嵌入选择器
    • 11.3携带参数的混入
    • 11.4注意:
  • 12.函数
    • 12.1语法
    • 11.4@return
      • 11.4.1总结
  • 12.继承(@extend)
    • 12.1语法
    • 12.2占位符选择器(%)
  • 13.@use
    • 13.1语法
    • 13.2全局命名空间(as*)
  • 14.私有模块
    • 14.1语法
  • 15.@forward
    • 15.1show/ hide
    • 15.2使用as *号为子模块添加前缀
  • 16.@at-root
  • 17.Scss内置扩展
    • 17.1使用

1.安装scss

npm install -g sass

2.选择器嵌套

css中重复写选择器是非常恼人的。尤其是html结构嵌套非常深的时候,scss的选择器嵌套可以避免重复输入父选择器,可以有效的提高开发效率,减少样式覆盖可能造成的异常问题。这也是我们最常用的功能。很多人用scss就只用了这个功能,然后觉得自己会了。

css中的样式
.container {
    width: 1200px;
    margin: 0 auto;
}
.container .header .img {
    width: 100px;
    height: 60px;
}

scss的写法,这边我感觉像less
.container {
    width: 1200px;
    margin: 0 auto;
    .header {
        .img {
            width: 100px;
            height: 60px;
        }
    }
}

3.属性嵌套

有些css属性遵循相同的命名空间 (相同的开头),比如font-family,font-size,font-weight都以font作为属性的命名空间。为了便于管理这样的属性,也为了避免重复输入。

css中的写法
.container {
  font-family: fantasy;
  font-size: 30em;
  font-weight: bold;
}

scss中的样式
.container {
  font: {
    family: fantasy;
    size: 30em;
    weight: bold;
  }
}

也可以携带自己的属性
.container {
  color: red {
    adjust: fantasy;
  }
}

4.父选择器&

在嵌套 css规则时,有时会需要使用嵌套外层的父选择器,例如,当给某个元素设定 hover 样式时,可以用& 代表嵌套规则外层的父选择器,scss在编译时会把&替换成父选择器名。

css中的样式
.container a {
    color:#333;
}
.container a:hover {
    text-decoration:underline;
    color:#F00;
}

scss中的样式
.container {
    a {
        color: #333;
        &:hover {
             text-decoration: underline;
             color: #f00;
        }
    }
}

也可以做选择器名称拼接,此时写在父类中的“&-名称”将不会携带父类

css中的样式
.main {
    color: black;
}
.main-sidebar {
    border: 1px solid;
}

scss中的写法
.main {
	color:black;
	&-sidebar {
		border: 1px solid;
	}
}

5.变量

//变量的定义,语法:$变量名:变量值
$color:black;
p {
  //变量的使用:$变量名
  color:$color
}

5.1变量的规范

  • 变量以美元符号$开头,后面跟变量名;
  • 变量名是不以数字开头的可包含字母、数字、下划线、横线(连接符);
  • 通过连接符-与下划线_定义的同名变量为同一变量;
  • 变量一定要先定义,后使用;
  • 写法同css,即变量名和值之间用冒号:分隔;

5.2变量的作用域

  • 全局变量:声明在最外层的变量,可在任何地方使用;
  • 局部变量:嵌套规则内定义的变量只能在嵌套规则内使用。

5.3给变量设置默认值(!default)

如果当前在使用!default前没有定义此变量则使用该!default定义的默认值,否则使用定义的值

$col: black !default;

6数据类型

  • 数字,1rem、2vh、13、 10px;
  • 字符串,分有引号字符串与无引号字符串,“foo”、 ‘bar’、baz;
  • 颜色,blue, #04a3f9, rgba(255,0,0,0.5);
  • 布尔型,true和false;
  • 空值,null是其类型的唯一值。表示缺少值,通常由函数返回以表示缺少结果;
  • 数组 (list),用空格或逗号作分隔符,1.5em 1em 0 2em,Helvetica,Arial,sans-serif;
  • maps, 相当于 JavaScript的 object,(key1: value1, key2: value2);

7.运算符

  • ():提高运算的优先级,类似于java中先执行()里面的内容一样
  • == 相等
  • != 不等
  • 关系运算符
    • <
    • >
    • <=
    • >=
  • 布尔运算符
    • and
    • or
    • not
  • 数字运算符
    • +也可以连接字符串
    • -
    • *
    • /
    • %

8.插值语法

类似于mybatis中的#{},也是将变量插入到语法中,只不过scss要用$声明变量

$size:10px;
.box {
	margin: #{$size} 0;
}

9.流程控制语句

9.1 条件语句

$theme:0;
.box {
  @if($theme == 0) {
    color: black;
  } @else if($theme == 1) {
    color: blue;
  } @else {
    color: red;
  }
}

9.2循环语句

9.2.1@for

//语法 @for $变量名 from 起始位置 through 终止位置, $变量名的范围是[起始位置,终止位置]
@for $i from 1 through 3 {
  .box span:nth-child(#{$i}) {
    font-size: 10px * $i;
  }
}
//语法 @for $变量名 from to through 终止位置,$变量名的范围是[起始位置,终止位置);
@for $i from 1 to 3 {
  .box span:nth-child(#{$i}) {
    font-size: 10px * $i;
  }
}

9.2.2@each

//语法:@each $变量名 in 数组,类似于js中的for in
$items:[1, 2, 3, 4, 5];
@each $i in $items {
  .box span:nth-child(#{$i}) {
    font-size: $i * 10px;
  }
}

9.2.3@while

//语法:$while 布尔表达式
$column:12;
@while $column>0 {
  .col-sm-#{$column} {
    width: $column / 12 * 100%;
  }
  $column:$column - 1;
}

10@import

@import算是一个比较简易的模块系统。scss拓展了@import 的功能,允许其导入 scss或 sass文件。被导入的文件将合并编译到同一个 css文件中,被导入的文件中所包含的变量或者混合指令 (mixin) 都可以在导入的文件中使用。

@import "./common";

.box {
  color:$color
}

10.1引入scss不编译

如果需要导入 scss或者 sass文件,但又不希望将其编译为 css,只需要在文件名前添加下划线,这样会告诉 scss不要编译这些文件。注意:

  • 导入语句中却不需要添加下划线
  • 不可以同时存在添加下划线与未添加下划线的同名文件,添加下划线的文件将会被忽略。

10.2嵌套引入scss

大多数情况下,一般在文件的最外层(不在嵌套规则内)使用@import,其实,也可以将@import 嵌套进内层选择器或者 @media 中,与平时的用法效果相同,只是这样导入的样式只能出现在嵌套的层中,存在作用域。

#main {
    @import "example";
}

11.mixin

混合指令(Mixin)用于定义可重复使用的样式。混合指令可以包含所有的css规则,绝大部分 scss规则,甚至可以通过参数功能引入变量,输出多样化的样式。

11.1语法

  • 定义混入
//语法:@mixin 混入名 {样式}
@mixin block {
  color: black;
  font: {
    size: 100px;
  }
}
  • 使用混入
//引入混入
@import "base";
//使用混入
.box {
  @include block;
}

11.2mixin中定义嵌入选择器

  • Scss中的语法
//语法:@mixin 混入名 {样式}
@mixin block {
  color: black;
  .div {
    font: {
      size: 100px;
    }
  }
}

//引入混入
@import "base";
//使用混入
.box {
  @include block;
}

  • 生成的css
.box {
  color: black;
}
.box .div {
  font-size: 100px;
}

/*# sourceMappingURL=index.css.map */

11.3携带参数的混入

  • 多参数
// 定义块元素内边距
@mixin block-padding($top, $right, $bottom, $left) {
    padding-top: $top;
    padding-right: $right;
    padding-bottom: $bottom;
    padding-left: $left;
}
 
// 按照参数顺序赋值
.container1 {
   @include block-padding(10px, 20px, 30px, 40px);
}
 
// 可指定参数赋值
.container2 {
   @include block-padding($left: 20px, $top: 10px, $bottom: 10px, $right: 30px);
}
 
// 可指定参数赋值,但是必须指定4个值,不能缺失
.container3 {
   @include block-padding($left: 10px, $top: 10px, $bottom: 0, $right: 0);
}
.container1 {
    padding-top: 10px;
    padding-right: 20px;
    padding-bottom: 30px;
    padding-left: 40px;
}
 
.container2 {
    padding-top: 10px;
    padding-right: 30px;
    padding-bottom: 10px;
    padding-left: 20px;
}
 
.container3 {
    padding-top: 10px;
    padding-right: 0;
    padding-bottom: 0;
    padding-left: 10px;
}
  • 指定默认值
// 定义块元素内边距,参数指定默认值
@mixin block-padding($top:0, $right:0, $bottom:0, $left:0) {
    padding-top: $top;
    padding-right: $right;
    padding-bottom: $bottom;
    padding-left: $left;
}
 
// 可指定参数赋值
.container {
    /** 不带参数 */
    @include block-padding;
    /** 按顺序指定参数值 */
    @include block-padding(10px,20px);
    /** 给指定参数指定值 */
    @include block-padding($left: 10px, $top: 20px)
}

11.4注意:

  • mixin是可以重复使用的一组css声明,有助于减少重复代码,只需声明一次,就可在文件中引用;
  • 混合指令可以包含所有的 css规则,绝大部分scss规则,可以传递参数,输出多样化的样式;
  • 使用参数时建议加上默认值;
  • @import导入局部模块化样式(类似功能、同一组件);
  • @minix定义的是可重复使用的样式

12.函数

@function用于封装复杂的操作,可以很容易地以一种可读的方式抽象出通用公式和行为,函数提供返回值,常用来做计算方面的工作。

12.1语法

  • 常见定义
//语法:@function 函数名(参数列表) {函数体}
@function square($base) {
  @return $base * $base * 1px;
}

.sidebar {
  float: left;
  margin-left: square(4);
}
  • 设置默认值
//语法:@function 函数名(参数列表) {函数体}
@function square($base: 10) {
  @return $base * $base * 1px;
}

.sidebar {
  float: left;
  margin-left: square();
}

.sidebar {
  float: left;
  margin-left: 100px;
}

11.4@return

@return只允许在@function内使用,和js一样,遇到return就会返回。类似于java中的return

  • scss种写法
@function red() {
    $is: true;
    @if $is {
        @return 'is';
    }
    @return red;
}
.con{
    color: red();
}
  • 编译的css
.con {
    color: "is";
}

11.4.1总结

  • @function和@mixin参数的使用方式没啥区别;
  • @function用来计算,@mixin用来封装样式,@import用来抽离他们为一个模块。

12.继承(@extend)

和java中的extend的意思相同,这里是用来继承样式的,相对于java,scss是多继承,这一点就很好,一个儿子可以有好多个爹

12.1语法

  • 单继承
.box1 {
  font-size: 10px;
}

.box {
	bakcgroud-color: red;
}

.box2 {
  @extend: .box;
  @extend .box1;
  color: black;
}

编译

.box1, .box2 {
  font-size: 10px;
}

.box2 {
  color: black;
}

/*# sourceMappingURL=index.css.map */

12.2占位符选择器(%)

算是对css选择器的扩展,但是只能用在@extend后

//语法:css原生选择器 %占位符选择器名
%a {
  font-size: 10px;
}

.box2 {
  //使用 @extend %占位符选择器名
  @extend %a;
  color: black;
}

注意: 占位符选择器%所属的样式未使用时,不会被编译到css文件中,算是一个小优化吧。

13.@use

相较于@import,@use可以为当前路径设置一个别名,像sql中的as一样,不过这里叫做命名空间

13.1语法

//语法:@user "路径" as 别名
@use "../style1/test1" as test1;
@use "../style2/test2" as test2;

.box {
  @include test2.color;
}

13.2全局命名空间(as*)

普通的命名空间,使用时要用命名空间.样式名,使用全局命名空间后,可以直接使用样式名,当然了就和@import一样了,失去了@use的优势了

//语法:@user "路径" as *
@use "../style1/test1" as *;

.box {
  @include color;
}

14.私有模块

类似于java中的private,私有模块只能在当前scss文件中使用

14.1语法

//语法:$_变量名:变量值
$_rel:black;

.box {
  color: $_rel;
}

15.@forward

@forward语句可以引入另一个模块的所有变量、mixins和函数,将它们直接作为当前模块的API暴露出去,不会真的在当前模块增加代码。不同于 @use, @forward不能给变量添加命名空间。@forward类似与servlet中的forward,当我们用@forward引入当前scss文件,就可以直接用该文件中的样式。

在这里插入图片描述
在这里插入图片描述

15.1show/ hide

通过控制 show和 hide,可以决定模块中的哪些成员对引入后的模板可见。对隐藏的变量,在下游文件中不可以使用,相当于模块私有成员。

@forward "a" show rounded;
@forward "b" hide $radius;

15.2使用as *号为子模块添加前缀

大多数情况下,一个样式库会存在一个入口文件index.scss,然后在index.scss中引入其他的子文件。这种结构类似于一个多合一模块。那么,如果要在某一文件中 @forward多个子模块,就可以使用as -*语句,为子模块下的成员自动带上前缀以区分。

@forward "a" as mixin-*;
@forward "b" as var-*;

@import "c.scss";
 
.button {
    @include mixin-rounded;
    padding: $var-radius;
}

16.@at-root

@at-root用来跳出多级嵌套,在多级嵌套时比较常用,包含without和with。

.box1 {
  .box2 {
    .box3 {
      color: red;
      @at-root .box4 {
        font-size: 10px;
      }
    }
  }
}

编译

.box1 .box2 .box3 {
  color: red;
}
.box4 {
  font-size: 10px;
}

/*# sourceMappingURL=index.css.map */

17.Scss内置扩展

17.1使用

@use 'sass:扩展模块名‘
```
## 17.2color
>scss包含很多操作颜色的函数。例如lighten()与 darken()可用于调亮或调暗颜色,opacify()使颜色透明度减少,transparent()使颜色透明度增加,mix()用来混合两种颜色。
```js
.p1 {
    // 让颜色变亮
    color:scale-color(#5c7a29, $lightness: +30%);
}
 
.p2 {
    // 让颜色变暗
    color:scale-color(#5c7a29, $lightness: -15%);
}
 
.p3 {
    // 降低颜色透明度
    color:scale-color(#5c7a29, $alpha: -40%);
}
```
## 17.3String
>scss有许多处理字符串的函数,比如向字符串添加引号的quote()、获取字符串长度的string-length()和将内容插入字符串给定位置的string-insert()。
```js
p {
    &:after {
        content: quote(这是里面的内容);
    }
    background-color: unquote($string: "#F00");
    z-index:str-length("scss学习");
}
```
## 17.4Math
>数值函数处理数值计算,例如:percentage()将无单元的数值转换为百分比,round()将数字四舍五入为最接近的整数,min()和max()获取几个数字中的最小值或最大值,random()返回一个随机数。
```js
p {
    z-index: abs(-15); // 15
    z-index: ceil(5.8); //6
    z-index: max(5, 1, 6, 8, 3); //8
    opacity: random(); // 随机 0-1
}
```
## 17.5List
>List函数操作List,length()返回列表长度,nth()返回列表中的特定项,join()将两个列表连接在一起,append()在列表末尾添加一个值。
```js
p {
    z-index: length(12px); //1
    z-index: length(12px 5px 8px); //3
    z-index: index(a b c d, c); //3
    padding: append(10px 20px, 30px); // 10px 20px 30px
    color: nth($list: red blue green, $n: 2); // blue
}
```
## 17.6Map
>Map函数操作Map,map-get()根据键值获取map中的对应值,map-merge()来将两个map合并成一个新的map,map-values()映射中的所有值。
```js
$font-sizes: ("small": 12px, "normal": 18px, "large": 24px);
$padding:(top:10px, right:20px, bottom:10px, left:30px);
p {
    font-size: map-get($font-sizes, "normal"); //18px
    @if map-has-key($padding, "right") {
        padding-right: map-get($padding, "right");
    }
    &:after {
        content: map-keys($font-sizes) + " "+ map-values($padding) + "";
    }
}
```
## 17.7Seletor
>选择符相关函数可对选择css进行一些相应的操作,例如:selector-append()可以把一个选择符附加到另一个选择符,selector-unify()将两组选择器合成一个复合选择器。
```js
@use 'sass:selector';
 
@debug selector.is-superselector("a", "a"); // true
 
// 可以直接使用@forward下的前缀
@debug selector-append("a", ".disabled"); // a.disabled
@debug selector-extend("a.disabled", "a", ".link"); // a.disabled, .link.disabled
 
.header {
    content: selector-append(".a", ".b", ".c") + '';
    content: selector-unify("a", ".disabled") + '';
}
```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/108319.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软件测试】概念篇

目录 一、需求 1.1用户需求 1.2软件需求 1.3需求的重要性 二、测试用例 三、BUG 3.1什么是BUG 3.2如何描述一个BUG 4.3BUG优先级 四、软件开发模型 4.1软件生命周期 4.2开发模型 定义&#xff1a;软件测试就是一系列活动&#xff0c;这些活动是为了评估一个程序或者…

新店速递 | IU酒店带您领略“东方古罗马”

淄博&#xff0c;位处鲁中&#xff0c;是黄河三角洲生态经济和蓝色经济区的交汇处。四季分明的气候造就了这座齐国故都的生态多样性&#xff0c;南高北低的地理位置使其峻岭平原兼具&#xff0c;鲁中的位置又赋予他交通枢纽的重要性。这里历史气息浓厚&#xff0c;社会文化自由…

中文语法纠错全国大赛获奖分享:基于多轮机制的中文语法纠错

中文语法纠错任务旨在对文本中存在的拼写、语法等错误进行自动检测和纠正&#xff0c;是自然语言处理领域一项重要的任务。同时该任务在公文、新闻和教育等领域都有着落地的应用价值。但由于中文具有的文法和句法规则比较复杂&#xff0c;基于深度学习的中文文本纠错在实际落地…

新能源汽车市场渗透率不断提高,锂电设备需求空间较大

根据观研报告网发布的《中国新能源汽车行业发展深度研究与投资趋势调研报告&#xff08;2022-2029年&#xff09;》显示&#xff0c;近年来&#xff0c;随着各国开启能源转型&#xff0c;在汽车领域&#xff0c;由于电动汽车具有高效节能、零排放等优点&#xff0c;已逐渐成为汽…

配置小型公司网络WLAN基本业务(AC通过三层口管理AP)

组网需求&#xff1a; 某小型企业由于业务需要&#xff0c;希望员工能在企业内部随时随地的访问Internet&#xff0c;进行移动办公。该企业部署了一台AR路由器作为出口网关&#xff0c;希望同时在AR路由器上部署WLAN功能&#xff0c;为企业员工提供无线网络接入服务&#xff0c…

JDK,JRE,JVM的作用及关系

1.定义JDK(Java Development Kit): 是Java语言的软件开发工具包&#xff0c;内部包含了代码的编译工具和运行工具。JRE(Java Runtime Environment): 指Java运行时环境&#xff0c;包含java虚似机、以及核心类库(java帮我们写好的程序)等java运行所需的东西。JVM(Java Virtual M…

必须要学习的源码--ConcurrentHashMap

并发安全的集合&#xff1f; 并发不安全的集合 在 Java 中&#xff0c;有一些集合是不安全的&#xff0c;因为它们不是线程安全的。这意味着如果多个线程同时访问这些集合&#xff0c;那么它们可能会出现不可预料的行为。 Java 中的并发不安全的集合包括&#xff1a; ArrayLi…

花房集团上市,走向元宇宙新征程

12月12日&#xff0c;花房集团在港交所成功上市&#xff0c;首日便受到追捧&#xff0c;当日最高涨幅达28.75%。 继360、360数科、鲁大师后&#xff0c;这是“红衣教主”周鸿祎收获的第四个IPO。 花房集团作为直播界元老之一&#xff0c;两年内三次申请IPO&#xff0c;终于在…

(GCC)STM32进阶详解之栈回溯

接上一篇&#xff1a; 函数调用 由上一篇大概了解了函数是如何被调用&#xff0c;中断或者说异常又是如何被调用&#xff0c;而这一篇相当于上一篇知识的一个应用&#xff0c;也是上一篇遗留的思考&#xff0c;即在hardfault中如何判断是从何处触发这个异常的。本来打算自己写…

GO09:整型、浮点、字符类型的介绍和使用细节

基本类型的使用 基本介绍 3.8整数的各个类型 func main(){var i int 1 fmt.Println("i", i) var j int8 127 fmt.Println("j", j) }int的无符号的类型&#xff1a; 整型的使用细节 一、Golang各整数部分&#xff1a;有符号和无符号&#xff0c;int u…

信而泰RENIX 802.1ag功能介绍-网络测试仪实操

一、EOAM概述​ 1.以太网​ 1.1以太网优点​ 简单易用​ 价格低廉​ 高拓展性​ 大势所趋&#xff0c;一统天下​ 1.2以太网缺点​ 可管理性差​ 定位故障手段少​ 定位故障速度慢​ 维护成本高​ 2.以太网OAM​ ■EOAM​ 为运营商服务​ 提高以太网可靠性、可维…

非零基础自学Golang 第15章 Go命令行工具 15.6 性能分析 15.6.2 通过文件方式 15.6.3 通过HTTP方式 15.7 小结

非零基础自学Golang 文章目录非零基础自学Golang第15章 Go命令行工具15.6 性能分析15.6.2 通过文件方式15.6.3 通过HTTP方式15.7 小结第15章 Go命令行工具 15.6 性能分析 15.6.2 通过文件方式 为了能分析Go程序的性能&#xff0c;我们需要在程序中导入runtime/pprof来生成性…

飞鹤揭榜“十四五”项目,牵头研制新一代婴配粉

12月22日&#xff0c;在“鲜萃活性营养&#xff0c;更适合中国宝宝体质”中国飞鹤60周年战略升级发布会上&#xff0c;飞鹤对外公布&#xff0c;其牵头申报的——“基于中国母乳研究的新一代婴配乳粉制造技术研究与示范”项目成功获批。 这是继去年飞鹤与江南大学、大连工业大…

大数据基础平台搭建-(二)Hadoop集群搭建

大数据基础平台搭建-&#xff08;二&#xff09;Hadoop集群搭建 大数据平台系列文章&#xff1a; 1、大数据基础平台搭建-&#xff08;一&#xff09;基础环境准备 2、大数据基础平台搭建-&#xff08;二&#xff09;Hadoop集群搭建 大数据平台是基于Apache Hadoop_3.3.4搭建的…

不同存储资源的应用场景及优缺点介绍

容器应用应当根据应用系统的特点&#xff0c;综合考虑容器应用对存储类型、存储性能及数据高可用等方面的要求&#xff0c;选择最适合的存储资源类型。常见的存储资源应用场景包括三类&#xff1a;将存储挂载在外部宿主机上、将存储放置于容器内部和使用外部共享存储。下面对每…

MySQL面试常问问题(数据库架构+存储引擎) —— 赶快收藏

目录 1.说说 MySQL 的基础架构? 2.一条 SQL 查询语句在 MySQL 中如何执行的&#xff1f; 3.MySQL有哪些常见存储引擎&#xff1f; 4.那存储引擎应该怎么选择&#xff1f; 5.InnoDB和MylSAM主要有什么区别&#xff1f; 1.说说 MySQL 的基础架构? MySQL逻辑架构图主要分三…

浅谈古建筑电气火灾成因及防控对策

摘要: 我国古建筑多为砖木结构&#xff0c;当发生火灾事故时具有蔓延快、扑救难的特点&#xff0c;而火灾对古建筑的损害性很大&#xff0c;电气火灾事故在我国火灾事故中比重居高不下。本文通过对古建筑电气火灾成因进行分析&#xff0c;有针对性地提出了古建筑电气火灾防控对…

Java工厂企业工艺管理系统源码 springboot2+vue2前后端分离架构 工艺路线 加工工序管理源码

工艺系统是对车间现场加工工序的管理&#xff0c;根据生产成品或者半成品的工单&#xff0c;以及产品标准工艺路线&#xff0c;系统可以自动生成产品工序加工命令 并且可以根据实际情况再进行工序调整.系统可以根据每道工序&#xff0c;打印工序派工单。工序之间物料转移&#…

【推荐】华为顶级认证HCIE-RS培训教材全套合集

HCIE是华为认证系统中的专家级认证。候选人必须通过笔试&#xff0c;LAB考试和面试&#xff0c;才能最终获得HCIE认证。困难还从另一方面解释了证书的含金量。 该认证具有很高的含金量和行业认可度。此外&#xff0c;获得HCIE证书的工程师将优先获得华为和华为合作伙伴的聘用&a…

Struts2中的数据校验

Struts2中的数据校验1、Action控制器2、jsp页面3、struts.xml配置4、测试1、Action控制器 如果要使用校验&#xff0c;则需要继承ActionSupport类&#xff0c;覆写validate()方法&#xff0c;如果是实现Action接口&#xff0c;则无法覆写此方法。直接在之前的控制器基础上进行…