【前端笔记】二、项目中常见的前端语法

472 阅读10分钟

一、H5

文章定位:一些使用细节记录

一、基本标签

1、div

1、 关于 div 的height父容器设置了高度,子元素可以越界出去 image.png

  1. 如果都是文字的话,置宽/高度有些时候意义不大,设置行高来推;两行的计算单行来上下推,宽高都用高来推,用安卓宽度那套,line-height很重要;
  • 计算宽度(15)要是怕出问题的话,100/375*15,单位vw;
  • 高度的话也用vw,把对应的15换的就行(以宽度计算后的为基础,不然高要是太长了 比例就不对了)
  • 没有设置宽度,所以div的宽度就变成了100%
  • css样式vh屏幕高度,踩坑指南
  • 关于占满全屏 某种情况:
	width: 100%;
	height: 100vh;
  1. 设置背景和堆叠的时候height还是有用的;
  2. 关于padding,和android不一样,height和padding是独立的,不会减掉;
  3. 画点:如何使用html定义一个红色小圆点
  4. 画虚线:前端必会的 HTML+CSS 常用技巧 之 虚线的实现方式
  • background法,挺好的,直线也行;
  • 易改样式;
  1. 画直线:在 HTML 中创建垂直线 | D栈 - Delft Stack
  2. 竖直线2:CSS虚线实现方法及多种应用实例_w3cschool

2、hr

1、其实是个方框,设置高度就能看见了

2、对div设置这个border-bottom: 0.5px solid #d8d8d8;直接加底边,蛮有意思的

2、img

1、object-fit - CSS:层叠样式表

  1. 常见四种设置图片填充类型
  • object-fit: contain;看着像是那个大就按比例拉伸那个。
  • object-fit: cover;按比例填充满宽高,多了的会裁剪。
  • object-fit: fill;不按比例,全部拉伸填充。
  • object-fit: none;

3、p

1、限制行数等:

  1. html——P标签 文字超出省略、 首字下沉效果 和 两端对齐_p标签超出省略_肖ZE的博客-CSDN博客
  2. 两行或三行(多行)文本溢出显示...不生效_文本溢出3行
  • 有些时候设置行数限制没生效可以试下这个,奇葩问题;
  • 看样式的思路挺好的
  • 至于造成这种情况的原因有很多,比如 webpack打包时optimize-css-assets-webpack-plugin插件认为语法不规范给删掉了;
  • 自测发现浏览器中如果限定网页宽度,有些时候英文不会换行的;
  • 实用写法
      word-break: break-all;
      overflow: hidden;
      display: -webkit-box;
      -webkit-line-clamp: 2;
      /*! autoprefixer: off */
      -webkit-box-orient: vertical;
      /*! autoprefixer: on */
      text-overflow: ellipsis;
      -ms-text-overflow: ellipsis;

image.png

  1. CSS 限制文本显示行数
  • 这个写法也差不多,主要有个html可以看到效果;

2、设置宽高度是有效的

3、设置文字断行规范

  1. word-break - CSS:层叠样式表
  • 关键字:word-break

4、iFrame:链接窗口嵌套显示

1、终于搞懂了 Iframe (跨窗口通信)

2、可以和Link组合

5、input:输入框

6、alert:弹窗

  1. 样例:alert('测试')

  2. 关于js:单引号和双引号差别不大;

7、点击事件Click

1、 React 的onclick事件在渲染后自动执行问题

  1. 有种写法会自动执行;

8、浏览器定位

HTML5 地理定位 | 菜鸟教程 (runoob.com)

二、Antd

1、表单 Form

  1. Button可以直接嵌在里面,不用实现onClick;
  2. 关于表单的数据源设置;

image.png

2、图片 Image

  1. 这个宽高只指定一个看起来另一个能自适应

3、ImageUploader 图片上传

  1. 图片选择器

4、间距

5、Steps 步骤条

6、TabBar 标签栏

二 Plus、Antd-mobile

Antd在Pc端很强大,但在移动端略显不足,所以有了antd-mobile;

ImageViewer 图片查看器

1.通过放大查看图片全貌。需要点开图片查看细节,配合缩略图使用。

三、 CSS/LESS

CSS 布局 - position 属性 (w3school.com.cn)

一、布局

1、5种常规布局方式

  • static
  • relative:指的是自己从原位置到目标位置的偏移量
  • fixed
  • absolute:基于父布局定位
  • sticky

2、Flex

1、基本说明flex 布局的基本概念 - CSS:层叠样式表 | MDN (mozilla.org)

  1. 容器:Flexible Box 一维模型(横/纵),作为对比的是另外一个二维布局 CSS Grid Layout
  • 容器的 display 属性值改为 flex 或者 inline-flex。完成这一步之后,容器中的直系子元素就会变为 flex 元素
  1. flex-direction:方向轴,四参数,决定水平还是垂直排列
  2. flex-wrap:显示多行容器;
  3. Constraint
  • flex-basis:定义一个元素空间大小
  • flex-grow:设定正整数值以按比例分配空间
  1. flex: 30%;两个设置比例,设置width不对的;
  2. 类似安卓0dp的写法:微信小程序-flex布局:垂直、水平方向-自动填充满剩余空间

image.png

3、画虚线

1、## background 的 linear-gradient和边框虚线:前端必会的 HTML+CSS 常用技巧 之 虚线的实现方式_html 虚线_zhuangwei_8256的博客-CSDN博客

2、hr和边框法:CSS虚线实现方法及多种应用实例_w3cschool

4、透明度

1、opacity,值为1是完全不透明

2、块级元素相关知识:

1、CSS中 块级元素、行内元素、行内块元素区别 - 掘金 (juejin.cn)

  1. display: block 会占据一行,可以设置宽高

3、居中方式

1、绝对定位+margin auto垂直居中引发的思考

  1. 个人试了下设置宽度,margin 设置auto最好用,background的center属性一般般感觉没啥用;

3、常用熟悉

1、可见

1、参考:visibility - CSS:层叠样式表 | MDN (mozilla.org)

  1. visibility主要是否可见
  2. display主要是否展示(占空间)

四、React

一、生命周期

1、 React 组件生命周期 | 菜鸟教程 (runoob.com) 2. 基本上render()是自动触发的(继承React.Component)

二、基本说明

1、列表与key

  1. 作用:当前Keys 可以在 DOM 中的某些元素被增加或删除的时候帮助 React 识别哪些元素发生了变化。因此你应当给数组中的每一个元素赋予一个确定的标识;

2、jsx种map循环中使用if判断_withwz

  1. 有点蛋疼,能用三目运算符,不能用if;
  2. 写外头的参考:jsx 语法中使用 if else_jsx写if

3、 定义公共方法/常量

1、定义常量

  1. export和export default的区别
const t1= 3; 

/**
 * 接口档案病历样式类型
 */
const t2 = 'test';
const t3 = 'testkk';

export default t1;

export { t2, t3 };

2、定义函数:js export 对外输出常量、变量和函数_js export 变量

4、onClick事件

  1. React自定义组件使用onClick传参注意:onClick只是一个名字而已!_react 自定义组件onclick

5、添加断点 debugger

6、Js里直接赋值json

1、let result ={"success":false,"resultCode":"1004","msg":"network error"}

7、react-router原理之Link跳转结合组件

1、补充JavaScript ---location.href的用法_idomyway的博客-CSDN博客 2、window.location三种跳转方法释义_window.href.location跳转页面

  1. 这种跳转方式是Js本身的能力

8、函数与带入参的写法

  const judgeState = (list) => {
    /* List 倒序查找*/
    for (let i = list.length - 1; i >= 0; i--) {

      if (list[i].Code === stateLeave) {
        if (list[i].State === stateActieve) {
        
          break;
        }
      } 
    }
  };
  
  
    const TopTips = () => {
    return (
      <div className="tips">
        <i className="ui-icon"></i>
        <div className="text">
          你好
        </div>
      </div>
    );
  };
  

有意思的事件

1、React实现底部footer针对页面进行自适应

2、查看npm相关库最新版本的网站 @antv/xflow

五、ES6

1、使用数组 ...运算符

  1. 样例:
const number是 =[5,10,2,3,7,8]
console.log(...numbers)

三、常见错误信息

六、Node.js

querystring

1、stringify:将对象转为字符串 拼成链接;

  1. 参考使用:node.js的querystring.stringify的使用_在线
  • 例: ./texthtml?${stringify(params)}

七、Js

浏览器本地存储

1、短期存储:sessionStorage

  1. 通过get和set传递属性
  const dataLocalTemp = JSON.parse(sessionStorage.getItem('datas'));
     if(!(dataLocal.length === undefined || dataLocal.length==0)){
      console.log("yeTest 不为空进行赋值")
      setDataLocal(dataLocalTemp)
     }
   //ps  data是个数组  undefined判断是个标准量,所以不用加引号
   sessionStorage.setItem('data', JSON.stringify(data));
  1. removeItem 清空的对应的Session

2、持久化存储:localStorage

2、 JSON

1、JavaScript Object Notation,JavaScript 对象表示法 2、json要用双引号!!!

  1. JavaScript里声明对象,有没有引号(单/双)都行,Json左侧规约要双引号; 3、常用方法
  2. JSON.stringify():JavaScript 对象转换为字符串
  3. JSON.parse(): 将数据转换为 JavaScript 对象

3、Promise

1、定义:表示异步操作最终的完成(或失败)以及其结果值。 2、几种状态:

  • 待定(pending) :初始状态,既没有被兑现,也没有被拒绝。
  • 已兑现(fulfilled) :意味着操作成功完成。
  • 已拒绝(rejected) :意味着操作失败。

3、方便包装多个Promise的工具类:promise-to-async-events: promise-to-async-events

4、JavaScript判断某个参数是否为空常见方式&& ==

1、声明useState使用TS声明类型

  1. useState([]);声明数组
  2. useState({});声明对象
  1. useState([[]]);声明不定长二维数组
  • length == 1,说明只给第一组赋值,动态生成[1][0];
  • length == 2,第二组赋值,第一组不一定赋值了;
  • if (fileList[0][0]){} 判断第一组第一个元素是否有值

2、判空

  1. JSON.parse(sessionStorage.getItem('datas'));读出来是个字符串 判断是否为null比较靠谱,对其使用数组的length永远都是undefined,console打出来是null可以用===null和!== null判断
  2. 判断数组长度length报错_vue判断数组长度

3、不相等运算符(!=)检查其两个操作数是否不相等,并返回布尔结果。与严格不相等 !==运算符不同,它会转换并比较不同类型的操作数。

5、Array 数组

1、一些api方法很好用

  • slice()过滤位数;index,浅拷贝什么的

6、Data

1、JavaScript实现Date( ) ——日期格式化的三种常用方法

  1. 实现24小时制:new Date().toLocaleString修改为24小时_new date().tolocalestring()_
  2. 字符串日期转date类型进行排序:js日期排序(使用sort)_js 日期排序

7、循环

1、js遍历数组的10种方法

  1. for循环挺好用的
  2. map方法里不支持使用if
  3. arr.reverse()会将arr数组本身变为逆序;

七、辅助

1、查看当前返回的Json

  1. 网页中 image.png

  2. 浏览器查看 image.png

2、跨域请求

1、基本概念:什么是跨域请求以及实现跨域的方案

  1. 协议 + 域名 + 端口号均相同,那么就是同域
  2. 为了防止CSRF攻击,常用JSONP, CORS 方法约定绕过同源策略:
  • JSONP:只支持get请求;
  • CORS:get,post都支持;

八、前端与客户端通信

1、h5:JSBridge 2、客户端使用支持与bridge

3、类似Win Scp:XShell免费版的安装配置教程以及使用教程(超级详细、保姆级)

九、常见错误

1、was loaded over HTTPS, but requested an insecure错误解决_was loaded over https, but requested an insecure f

  1. 主要是有些配置https会跳转到http网站,有点坑;

2、关于“TypeError: Assignment to constant variable”的问题解决方案

  1. 就字面意思,分配常量为可变的;
  2. const常量,let声明可变;

十、第三方插件

pdfh5在react的应用

1、功能:查看PDF格式链接;

十一、前端请求跨域问题

1、ajax跨域,这应该是最全的解决方案了

  1. 两种解决方案
  • CORS 请求跨域
  • JSONP方式【现在用的少了】
  1. 其他参考文章