美文网首页
项目问题总结【1】开发者平台

项目问题总结【1】开发者平台

作者: yokohu | 来源:发表于2017-12-28 16:07 被阅读0次

项目背景:开发者平台
一 、介绍
介绍:开发者平台是一个贯穿在项目开发过程中的工具集群,包括【项目管理】、【项目组】、【监控系统】、【管理中心】、【基础服务管理】五大功能模块,能一站式提供开发者在开发过程中除编程外的服务,
核心功能: web自动部署,错误日志在线查看,web业务监控,服务器健康状态监控,游戏服务监控
开发者可以通过该平台进行以下操作:
1.高效的进行部署任务。

2.获得监控服务,帮你快速发现问题,定位问题,解决问题。实现项目,游戏的高可靠。

3.统一管理自己的项目。

4.随时查看或下载项目日志。

5.团队管理,让管理者能够对开发团队的人力,权限关系,资源分配与使用有一个更标准化的管理。

二、问题总结

1.【js】Object.assign() 用于把一个或多个源对象的可枚举属性值复制到目标对象中,返回值为目标对象

Object.assign(target, ...sources)  target:目标对象; sources: 源对象

2.【js】事件处理器

在事件处理器中经常需要调用

event.preventDefault()

event.stopPropagation()

事件修饰符:.prevent 与 .stop

按键修饰符:如 <input v-on:keyup.13 = ‘submit’>

按键名: enter tab delete esc space up down left right space up down left right

【举例】

<!--在某个组件的根元素上监听一个原生事件-->
<a v-on:click.native=""></a> 
<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联  -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件侦听器时使用事件捕获模式 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
<div v-on:click.self="doThat">...</div>

3.【js】$.extend
作用:1.合并多个对象。2.深度嵌套对象。

    1.合并多个对象。 
    这里使用的就是$.extend()的嵌套多个对象的功能。所谓嵌套多个对象,有点类似于数组的合并的操作。 
    用法: jQuery.extend(obj1,obj2,obj3,..)
    var Css1={size: "10px",style: "oblique"}
    var Css2={size: "12px",style: "oblique",weight: "bolder"}
    $.jQuery.extend(Css1,Css2)
    //结果:Css1的size属性被覆盖,而且继承了Css2的weight属性
    // Css1 = {size: "12px",style: "oblique",weight: "bolder"}

    2.深度嵌套对象。
    ​ jQuery.extend( 
      ​{ name: “John”, location: { city: “Boston” } }, 
      ​{ last: “Resig”, location: { state: “MA” } } 
    ​); 
    ​// 结果: 
    ​// => { name: “John”, last: “Resig”, location: { state: “MA” } } 
    ​// 新的更深入的拷贝 .extend() 
    ​jQuery.extend( true, 
    ​{ name: “John”, location: { city: “Boston” } }, 
    ​{ last: “Resig”, location: { state: “MA” } } 
    ​); 
    ​// 结果 
    ​// => { name: “John”, last: “Resig”,  location: { city: “Boston”, state: “MA” }

4.【js】this.$nextTick() 异步更新队列
用于默认异步更新DOM, 下次事件循环时清空队列, 执行必要的DOM更新
Vue.nextTick(callback);

5.【HTML】比较html text val
(1).HTML
html():取得第一个匹配元素的html内容。这个函数不能用于XML文档。但可以用于XHTML文档
html(val):设置每一个匹配元素的html内容。这个函数不能用于XML文档。但可以用于XHTML文档。
(2).TEXT
text():取得所有匹配元素的内容。结果是由所有匹配元素包含的文本内容组合起来的文本。这个方法对HTML和XML文档都有效。
text(val):设置所有匹配元素的文本内容,与 html() 类似, 但将编码 HTML (将 "<" 和 ">" 替换成相应的HTML实体).
(3).VAL
val():获得第一个匹配元素的当前值。
val(val):设置每一个匹配元素的值。

6.【js】 监控页面刷新,关闭 事件的方法
页面加载时: 只执行onload
页面关闭时: 先执行onbeforeunload,最后onunload
页面刷新时: 先执行onbeforeunload,然后onunload,最后onload。
onbeforeunload:在页面刷新和关闭的时候触发事件,表示正要去服务器读 取新的页面时调用,此时还没开始读取,
onunload:则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。

7.【css】换行整理
1). word-break:break-all; 只对英文起作用,以字母作为换行依据
2). word-wrap:break-word; 只对英文起作用,以单词作为换行依据
3). white-space:pre-wrap; 只对中文起作用,强制换行
4). white-space:nowrap; 强制不换行,都起作用
5). white-space:nowrap; overflow:hidden; text-overflow:ellipsis;不换行,超出部分隐藏且以省略号形式出现(部分浏览器支持)
*注意:设置强制将英文单词断行,需要将行内元素设置为块级元素。


二期构建
1.【vuex】Getters

const getters = {
  LOG_lists : state => state.log_server_lists,
};

等同于

computed: {
   LOG_lists() {
    return this.$store.state.log_server_lists
  }
} 

2.【webpack】 webpack.common.js 里设置 resolve alias 用于 [ 重定向别名 ]
举例:

  resolve: {
    extensions: ['.js', '.vue', '.scss', '.css'],
    alias: {
      'moment': 'moment/min/moment-with-locales.min.js',
      'vue': 'vue/dist/vue.min.js',
      'vue-router': 'vue-router/dist/vue-router.min.js',
      '@': resolve('src'),
      'components': resolve('src/components'),
      'config': resolve('src/config'),
      'images': resolve('src/images'),
      'store': resolve('src/store'),
      'view': resolve('src/view'),
      'utils': resolve('src/utils')
    }
  }

3.【css】flex布局 水平垂直居中

        display: flex;
        align-items: center;
        justify-content: center;

4.【css】calc : 用于动态计算长度值,函数支持 "+", "-", "*", "/" 运算;
运算符前后都需要保留一个空格,例如:width: calc(100% - 10px)

5.【vue】刷新当前页 this.$router.go(0)

6.【js】保留两位小数 toFixed

var num = 2.446242342;
num = num.toFixed(2);  // 输出结果为 2.45

扩展
问题: js 数字计算时可能出现精度溢出,导致计算结果不准确。如 1.1*100时结果为 110.00000000000001
解决方法: 用toFixed()将数字的精度缩小
举例: 判断两个数字相等

 function isEqual (num1,  num2 , digits = 10) {
  return num1.toFixed(digits) === num1.toFixed(digits)
}

7.【vue】router-link
可点击击内容,实现 在新标签中打开链接
<router-link :to ="{ path: 'xxx', query: {} }"> {{ content }} </router-link>

8.【vue】$set用于给对象新增属性, 并使该对象新增属性的变化能被监听,
this.$set(item,'showAll',false) 实现给item添加一个showAll属性并设置默认值为false。

9.【js】循环删除数组

10.【js】ajax abort

11.【es6】
(1) 数组操作

  • map: 包含相同数量元素的新数组
  • filter: 包含原始数组子集的新数组
  • find: 找到通过传入函数测试的第一个元素
  • every: 检查数组的每个元素是否通过传入函数的测试,该函数应该返回true或false(每个函数都返回true,则结果为true,否则为false)。
  • some : 检查数组的任何元素是否通过由提供的函数实现的测试,该函数应该返回true或false。(有一个函数返回true,则结果true。否则结果为false)
    reduce #方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。 累加器的初始值应作为reduce函数的第二个参数提供。

(2) 指定默认函数参数,当一个数组成员严格等于undefined,默认值才会生效
function (arr = [], type = 'year') { xxxx }

(3)reset参数和扩展运算符

   // 数组的浅拷贝
    var array = ['red', 'blue', 'green']
    var copyOfArray = [...array]
  // 合并数组
     var defaultColors = ['red', 'blue', 'green']
     var userDefinedColors = ['yellow', 'orange']
     var mergedColors = [...defaultColors, ...userDefinedColors]
  // 将前几个函数参数绑定到变量,其他变量作为数组绑定到单个变量
    function printColors(first, second, third, ...others) {
      console.log('Top three colors are ' + first + ', ' + second + ' and ' + third + '. Others are: ' + others)
    }
    printColors('yellow', 'blue', 'orange', 'white', 'black')
    --》Top three colors are yellow, blue and orange. Others are: white,black

(4)Promise

  new Promise( (resolve, reject)=>{
    reject( 'rejected value' );
  });
  myPromise.then(onfulfilled).catch(onrejected);

12.【js】中止ajax请求

function abortAll() {
  $.each(ajaxs, function(i, myajax) {
    myajax.abort();
  });
}

13.require.ensure 代码拆分
webpack 在编译时,会静态地解析代码中的 require.ensure(),同时将模块添加到一个分开的 chunk 当中。这个新的 chunk 会被 webpack 通过 jsonp 来按需加载。

require.ensure(dependencies: String[], callback: function(require), chunkName: String)
// vue 项目中使用
component: resolve =>  require.ensure([], () => (require('../components/Hello')), 'demo')

14.【js es6】promise.all
应用场景:多个异步请求都完成后,再执行某个方法

15.Object.keys(obj) 返回一个由一个给定对象的自身可枚举属性组成的数组

 let obj = { foo: "bar", baz: 42 }, 
 keys = Object.keys(obj);

相关文章

  • 项目问题总结【1】开发者平台

    项目背景:开发者平台一 、介绍介绍:开发者平台是一个贯穿在项目开发过程中的工具集群,包括【项目管理】、【项目组】、...

  • 2019-10-29

    vuejs elementUI项目性能优化总结 在使用elementUI构建公司开发平台事时,发现有以下问题: 1...

  • 微信小程序版本管理

    目标:团队成员使用git工具,进行版本管理,协同开发 实现: 一、项目普通开发者 1、登录“微信开发者代码管理平台...

  • WEB前端安全自查和加固

    随着开发框架和平台的不断成熟,需要开发者考虑的安全问题越来越少,但并不是开发者就不需要关心项目的安全问题。Linu...

  • WEB前端安全自查和加固

    随着开发框架和平台的不断成熟,需要开发者考虑的安全问题越来越少,但并不是开发者就不需要关心项目的安全问题。Linu...

  • 项目总结

    这是我进入小组做的第一个项目,是一个工作流平台。总结一下想到的问题和收获,为以后作参考。 项目经验: 1、项目进行...

  • 企业账号和公司账号区别

    1.为企业账号登录开发者平台 2.为公司账号登录开发者平台

  • xf-项目问题总结-1

    问题: 项目为webapp,需要调用微信语音,使用微信公众平台调用其语音功能需要域名 ==>>1. 基于NATAP...

  • 5-机智云用户手册

    一、个人项目产品转企业项目产品: 1、种类可分为:个人开发者账号、企业开发者账号、个人项目、企业项目 2、个人项目...

  • 关于第三方登录问题

    国内: 1、QQ登录、微博登录 QQ开发者平台:http://open.qq.com/ 微博开发者平台:http:...

网友评论

      本文标题:项目问题总结【1】开发者平台

      本文链接:https://www.haomeiwen.com/subject/nurvgxtx.html