前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >超实用:Vue 自定义指令合集

超实用:Vue 自定义指令合集

作者头像
@超人
发布于 2021-05-24 07:04:17
发布于 2021-05-24 07:04:17
2.2K00
代码可运行
举报
文章被收录于专栏:Vue中文社区Vue中文社区
运行总次数:0
代码可运行

作者:Huup_We

juejin.cn/post/6963840401899782175

Vue2.0 中,代码复用和抽象的主要形式是组件。然而,有的情况下,你仍然需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令。

你可以将一些 css 样式抽象到指令中,也可以将一些 js 操作放到指令中去执行。就使用上来说,指令不用像组件一样需要引入和注册,注册后使用非常简洁方便。

对于在项目中常用到的指令,在此做了一个合集介绍,附源码可以直接在项目中使用。

元素点击范围扩展指令 v-expandClick

使用该指令可以隐式的扩展元素的点击范围,由于借用伪元素实现,故不会影响元素在页面上的排列布局。

可传入的参数为:上右下左扩展的范围,单位 px,默认向外扩展 10px。指令的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default function (el, binding) {
    const s = document.styleSheets[document.styleSheets.length - 1]
    const DEFAULT = -10 // 默认向外扩展10px
    const ruleStr = `content:"";position:absolute;top:-${top || DEFAULT}px;bottom:-${bottom || DEFAULT}px;right:-${right || DEFAULT}px;left:-${left || DEFAULT}px;`
    const [top, right, bottom, left] = binding.expression && binding.expression.split(',') || []
    const classNameList = el.className.split(' ')
    el.className = classNameList.includes('expand_click_range') ? classNameList.join(' ') : [...classNameList, 'expand_click_range'].join(' ')
    el.style.position = el.style.position || "relative"
    if (s.insertRule) {
        s.insertRule('.expand_click_range::before' + '{' + ruleStr + '}', s.cssRules.length)
    } else { /* IE */
        s.addRule('.expand_click_range::before', ruleStr, -1)
    }
}
复制代码

参数 Attributes:

参数

说明

默认值

类型

可选

top, right, bottom, left

上右下左扩展宽度(逗号分割),单位px

10,10,10,10

String

可填

然后你可以在模板中任何元素上使用新的 v-expandClick property,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-expandClick="20,30,40,50" @click="glabClickoutside"> 点击范围扩大</div>
复制代码

文本内容复制指令 v-copy

使用该指令可以复制元素的文本内容(指令支持单击复制 v-copy、双击复制 v-copy.dblclick、点击icon复制 v-copy.icon 三种模式),不传参数时,默认使用单击复制。

指令的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default {
  bind (el, binding) {
    // 双击触发复制
    if (binding.modifiers.dblclick) {
      el.addEventListener('dblclick', () => handleClick(el.innerText))
      el.style.cursor = 'copy'
    }
    // 点击icon触发复制
    else if (binding.modifiers.icon) {
      if (el.hasIcon) return
      const iconElement = document.createElement('i')
      iconElement.setAttribute('class', 'el-icon-document-copy')
      iconElement.setAttribute('style', 'margin-left:5px')
      el.appendChild(iconElement)
      el.hasIcon = true
      iconElement.addEventListener('click', () => handleClick(el.innerText))
      iconElement.style.cursor = 'copy'
    }
    // 单击触发复制
    else {
      el.addEventListener('click', () => handleClick(el.innerText))
      el.style.cursor = 'copy'
    }
  }
}

function handleClick (text) {
  // 创建元素
  if (!document.getElementById('copyTarget')) {
    const copyTarget = document.createElement('input')
    copyTarget.setAttribute('style', 'position:fixed;top:0;left:0;opacity:0;z-index:-1000;')
    copyTarget.setAttribute('id', 'copyTarget')
    document.body.appendChild(copyTarget)
  }

  // 复制内容
  const input = document.getElementById('copyTarget')
  input.value = text
  input.select()
  document.execCommand('copy')
  // alert('复制成功')
}
复制代码

参数 Attributes:

参数

说明

默认值

类型

可选

dblclick

双击复制文本内容

/

String

可选

icon

单击icon复制文本内容

/

String

可选

然后你可以在模板中任何元素上使用新的 v-copy property,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-copy> 单击复制 </div>
<div v-copy.dblclick> 双击复制 </div>
<div v-copy.icon> icon复制 </div>
复制代码

元素全屏指令 v-screenfull

全屏指令,点击元素进行全屏/退出全屏的操作。支持元素后面是否插入 element-ui 的全屏图标 el-icon-full-screen

指令的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import screenfull from 'screenfull'

export default {
  bind (el, binding) {
    if (binding.modifiers.icon) {
      if (el.hasIcon) return
      // 创建全屏图标
      const iconElement = document.createElement('i')
      iconElement.setAttribute('class', 'el-icon-full-screen')
      iconElement.setAttribute('style', 'margin-left:5px')
      el.appendChild(iconElement)
      el.hasIcon = true
  }
    el.style.cursor = el.style.cursor || 'pointer'
    // 监听点击全屏事件
    el.addEventListener('click', () => handleClick())
  }
}

function handleClick () {
  if (!screenfull.isEnabled) {
    alert('浏览器不支持全屏')
    return
  }
  screenfull.toggle()
}
复制代码

参数 Attributes:

参数

说明

默认值

类型

可选

icon

是否添加 icon

/

String

可选

然后你可以在模板中任何元素上使用新的 v-screenfull property,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-screenfull.icon> 全屏 </div>
复制代码

元素说明指令 v-tooltip

为元素添加说明,如同 element-uiel-tooltip(问号 icon 在鼠标覆盖后,展示说明文字)。

指令的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import Vue from 'vue'
export default function (el, binding) {
    if (el.hasIcon) return
    const iconElement = structureIcon(binding.arg, binding.value)
    el.appendChild(iconElement)
    el.hasIcon = true
}

function structureIcon (content, attrs) {
    // 拼接绑定属性
    let attrStr = ''
    for (let key in attrs) {
        attrStr += `${key}=${attrs[key]} `
    }
    const a = `<el-tooltip content=${content} ${attrStr}><i class="el-icon-question" style="margin:0 10px"></i></el-tooltip>`
    // 创建构造器
    const tooltip = Vue.extend({
        template: a
    })
    // 创建一个 tooltip 实例并返回 dom 节点
    const component = new tooltip().$mount()
    return component.$el
}
复制代码

参数 Attributes:

参数

说明

默认值

类型

可选

content

传给指令的参数。例如 v-tooltip:content 中,参数为 "content" ,tooltip中展示的内容为:"content"

/

String

可选

tootipParams

element-ui 支持的 tooltip 属性

/

Object

可选

然后你可以在模板中任何元素上使用新的 v-tooltip property,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-tooltip:content='tootipParams'> 提示 </div>
复制代码

举例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-tooltip:提示内容为XXX1> 提示1</div>
<div v-tooltip:提示内容为XXX='tootipParams'> 提示2 </div>
复制代码

为指令传入 element-ui 支持的参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data() {
    return {
        tootipParams: {
            placement: 'top',
            effect: 'light',
        }
    }
}
复制代码

文字超出省略指令 v-ellipsis

使用该指令当文字内容超出宽度(默认 100 px)时自动变为省略形式。等同于使用 css

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
width: 100px;
whiteSpace: nowrap
overflow: hidden;
textOverflow: ellipsis;
复制代码

使用指令效果:

指令的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default function (el, binding) {
    el.style.width = binding.arg || 100 + 'px'
    el.style.whiteSpace = 'nowrap'
    el.style.overflow = 'hidden';
    el.style.textOverflow = 'ellipsis';
}
复制代码

参数 Attributes:

参数

说明

默认值

类型

可选

width

元素宽度

100

Number

必填

然后你可以在模板中任何元素上使用新的 v-ellipsis property,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-ellipsis:100> 需要省略的文字是阿萨的副本阿萨的副本阿萨的副本阿萨的副本</div>
复制代码

回到顶部指令 v-backtop

使用该指令可以让页面或指定元素回到顶部。

可选指定元素,如果不指定则全局页面回到顶部。可选在元素偏移多少 px 后显示 backtop 元素,例如在滚动 400px 后显示回到顶部按钮。

指令的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default {
  bind (el, binding, vnode) {
    // 响应点击后滚动到元素顶部
    el.addEventListener('click', () => {
    const target = binding.arg ? document.getElementById(binding.arg) : window
    target.scrollTo({
      top: 0,
      behavior: 'smooth'
      })
    })
  },
  update (el, binding, vnode) {
    // 滚动到达参数值才出现绑定指令的元素
    const target = binding.arg ? document.getElementById(binding.arg) : window
    if (binding.value) {
      target.addEventListener('scroll', (e) => {
        if (e.srcElement.scrollTop > binding.value) {
          el.style.visibility = 'unset'
        } else {
          el.style.visibility = 'hidden'
        }
      })
    }
    // 判断初始化状态
    if (target.scrollTop < binding.value) {
      el.style.visibility = 'hidden'
    }
  },
  unbind (el) {
    const target = binding.arg ? document.getElementById(binding.arg) : window
    target.removeEventListener('scroll')
    el.removeEventListener('click')
  }
}
复制代码

参数 Attributes:

参数

说明

默认值

类型

可选

id

给需要回到顶部的元素添加的id

/

String

可选

offset

偏移距离为 height 时显示指令绑定的元素

/

Number

可选

然后你可以在模板中任何元素上使用新的 v-backtop property,如下表示在 idapp 的元素滚动 400px 后显示绑定指令的元素:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div  v-backtop:app="400"> 回到顶部 </div>
复制代码

也可以这样使用,表示为一直显示绑定指令的元素,并且是全局页面回到顶部:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div  v-backtop> 回到顶部 </div>
复制代码

空状态指令 v-empty

使用该指令可以显示缺省的空状态。可以传入默认图片(可选,默认无图片)、默认文字内容(可选,默认为暂无数据)、以及标示是否显示空状态(必选)。

指令的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import Vue from "vue";
export default {
  update (el, binding, vnode) {
    el.style.position = el.style.position || 'relative'
    const { offsetHeight, offsetWidth } = el
    const { visible, content, img } = binding.value
    const image = img ? `<img src="${img}" height="30%" width="30%"></img>` : ''
    const defaultStyle = "position:absolute;top:0;left:0;z-index:9999;background:#fff;display:flex;justify-content: center;align-items: center;"
    const empty = Vue.extend({
    template: `<div style="height:${offsetHeight}px;width:${offsetWidth}px;${defaultStyle}">
      <div style="text-align:center">
        <div>${image}</div>
        <div>${content || '暂无数据'}</div>
      </div>
    </div>`
    })
    const component = new empty().$mount().$el
    if (visible) {
      el.appendChild(component)
    } else {
      el.removeChild(el.lastChild)
    }
  },
}
复制代码

参数 Attributes:

参数

说明

默认值

类型

可选

emptyValue

包含文字内容 content、图片 img、是否显示 visible,仅 visible 必传

/

Object

必须

然后你可以在模板中任何元素上使用新的 v-empty property,如下传入对象 emptyValue

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div style="height:500px;width:500px" v-empty="emptyValue"> 原本内容

复制代码

需要传入一个参数对象,例如显示文字为:暂无列表,图片路径为 ../../assets/images/blue_big.png,控制标示 visible

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
emptyValue = {
  content: '暂无列表',
  img: require('../../assets/images/blue_big.png'),
  visible: true,
},
复制代码

徽标指令 v-badge

使用该指令在元素右上角显示徽标。

支持配置徽标的背景颜色、徽标形状;支持传入徽标上显示的数字。

指令的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import Vue from 'vue'

const SUCCESS = '#72c140'
const ERROR = '#ed5b56'
const WARNING = '#f0af41'
const INFO = '#4091f7'
const HEIGHT = 20
let flag = false
export default {
  update (el, binding, vnode) {
    const { modifiers, value } = binding
    const modifiersKey = Object.keys(modifiers)
    let isDot = modifiersKey.includes('dot')
    let backgroundColor = ''
    if (modifiersKey.includes('success')) {
      backgroundColor = SUCCESS
    } else if (modifiersKey.includes('warning')) {
      backgroundColor = WARNING
    } else if (modifiersKey.includes('info')) {
      backgroundColor = INFO
    } else {
      backgroundColor = ERROR
    }

    const targetTemplate = isDot 
        ? `<div style="position:absolute;top:-5px;right:-5px;height:10px;width:10px;border-radius:50%;background:${backgroundColor}"></div>` 
        : `<div style="background:${backgroundColor};position:absolute;top:-${HEIGHT / 2}px;right:-${HEIGHT / 2}px;height:${HEIGHT}px;min-width:${HEIGHT}px;border-radius:${HEIGHT / 2}px;text-align:center;line-height:${HEIGHT}px;color:#fff;padding:0 5px;">${value}</div>`
        
    el.style.position = el.style.position || 'relative'
    const badge = Vue.extend({
      template: targetTemplate
    })
    const component = new badge().$mount().$el
    if (flag) {
      el.removeChild(el.lastChild)
    }
    el.appendChild(component)
    flag = true
  }
}
复制代码

参数 Attributes:

参数

说明

默认值

类型

可选

normal、dot

徽标形状normal为正常徽标;dot 仅为一个点

normal

String

可选

success、error、info、warning

徽标颜色

error

String

可选

number

徽标上显示的数字

/

Number

可选

然后你可以在模板中任何元素上使用新的 v-badge property,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-badge.dot.info="badgeCount" style="height:50px;width:50px;background:#999"> </div>
复制代码

拖拽指令 v-drag

使用该指令可以对元素进行拖拽。

指令的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default {
  let _el = el
  document.onselectstart = function() {
    return false  //禁止选择网页上的文字
  }
  
  _el.onmousedown = e => {
    let disX = e.clientX - _el.offsetLeft //鼠标按下,计算当前元素距离可视区的距离
    let disY = e.clientY - _el.offsetTop
    document.onmousemove = function(e){     
      let l = e.clientX - disX
      let t = e.clientY - disY;
      _el.style.left = l + "px"
      _el.style.top = t + "px"
    }
    document.onmouseup = e => {
      document.onmousemove = document.onmouseup = null
    }
    return false
  }
}

复制代码

然后你可以在模板中任何元素上使用新的 v-drag property,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-drag> 支持拖拽的元素 </div>
复制代码

响应缩放指令 v-resize

使用该指令可以响应元素宽高改变时执行的方法。

指令的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default {
  bind(el, binding) {
    let width = '', height = '';
    function isReize() {
      const style = document.defaultView.getComputedStyle(el);
      if (width !== style.width || height !== style.height) {
        binding.value();  // 执行传入的方法
      }
      width = style.width;
      height = style.height;
     }
     el.__timer__ = setInterval(isReize, 300); // 周期性监听元素是否改变
  },
  unbind(el) {
    clearInterval(el.__timer__);
  }
}
复制代码

参数 Attributes:

参数

说明

默认值

类型

可选

resize()

传入元素改变 size 后执行的方法

/

Function

必选

然后你可以在模板中任何元素上使用新的 v-resize property,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 传入 resize() 方法
<div v-resize="resize"></div>
复制代码

如何使用这些指令?

为了便于管理指令,我们将每个指令都存在于单独的 js 文件中,你可以像这样将指令 import 进来后注册指令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import Vue from 'vue'
import ellipsis from './ellipsis' // 引入指令
// import other directives

const directives = {
  ellipsis
  // other directives
}

Object.keys(directives).forEach(name => Vue.directive(name, directives[name]))
复制代码

或者你可以直接使用 Vue.deirect 进行注册:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function (el) {
    // 聚焦元素
    el.focus()
  }
})
复制代码

这样就可以正常使用这些指令了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-指令名称 />
复制代码

总结

我们常常在引入全局功能时,主要都是写于 js 文件、组件中。不同于他们在使用时每次需要引用或注册,在使用上指令更加简洁。

除了将功能封装成组件,还可以多多考虑将一些简洁实用的功能放到 deirect 中。例如:常用的 css 样式、js 的一些操作、utils 中的一些工具方法、甚至是一个完整的组件都可以放进去(不过需要考虑一下性能和复杂度)。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Vue中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
数据采集传输仪钢铁厂环境污染监测
自生态环境保护理念被提出以来,相关部门对于工业污染治理不遗余力,旨在进一步减少工业污染排放,提高污染治理水平,切实解决一批影响空气质量的工业源问题,对于不合规企业限期进行整改,对拒不履行环保责任的企业,依法给予处罚。
星辰大海大星
2021/10/29
5620
数据采集传输仪钢铁厂环境污染监测
工业路由器下的机动车尾气在线监测方案
随着时代的发展,经济水平不断得到提高,人民的生活水平也得到日益改善,私家车成为很多家庭的必备代步工具,但是增多的汽车带来了严重的尾气排放。目前机动车尾气已成为空气污染中具备数量多、增长快、流动强、分散广等特性的污染源。
用户7348788
2020/06/19
4190
环保数采仪助力空气质量在线监测系统
空气的质量和人民生活健康息息相关。目前,空气污染源影响空气质量的最主要因素之一是来自固定和流动污染源的人为污染物排放,包括车辆、船舶、飞机的尾气、工业污染、居民生活和取暖、垃圾焚烧等。
用户7348788
2020/06/23
6550
环保数采仪下的污染物PM2.5在线监测方案
随着人们的生活水平的提高,对空气质量关注度越来越高,尤其是对人体危害较大的PM2.5。由于近年来各大城市建设发展进程的加快,城市面积与人口规模不断扩大,能源需求、机动车保有量、各类施工项目持续增长,城市空气质量提升工作面临的形势更加严峻。空气质量差的主要原因较为复杂,包括汽车尾气污染加剧、高污染燃料污染严重、建筑工地扬尘等。其中建筑工地和企业生产产生的污染则可以通过严格的管理手段得以控制,是目前能够在短时间能实现立竿见影的控制污染源,如何实现严格监管和控制是目前需要解决的问题。
用户7348788
2020/06/04
6390
边缘智能网关如何应对环境污染难题
随着我国工业化、城镇化的深入推进,包括大气污染在内的环境污染防治压力继续加大。为应对环境污染防治难题,佰马综合边缘计算、物联网、智能感知等技术,基于边缘智能网关打造环境污染实时监测、预警及智能干预方案,可应用于大气保护、水体保护、土壤保护、植被保护、生物保护等丰富场景,协力构建可持续发展的人居环境。
智慧物联小马
2023/12/11
2330
边缘智能网关如何应对环境污染难题
探营:空气质量监测数据这样出炉
每天,申城的空气质量是优是良,PM2.5的浓度是低是高,成为市民最关心的问题之一。随着上海空气质量监测能力的建设,目前全市已经实现一区一报,一小时一报。 不过,这些实时变化着的数字,不少市民也心存疑问:PM2.5通过哪些仪器测量?监测数据如何传输,得出数据值?身边有多少个“藏”起来的监控点?为何有时公布的空气质量监测数据,与自己的感受不太一样?日前,记者探营上海市环境监测中心,请来高级工程师一一解惑。 监测站里看监测 屋顶平台“站”着几个尖顶三脚架,三脚架的“尾巴”穿过屋顶连接到地面监测室的测量仪器,一
大数据文摘
2018/05/23
6660
红色预警尚未结束,北京启用机器学习预测空气污染
【新智元导读】今年冬天北京启用雾霾预警系统,将传统的大气化学物理模型与机器学习相结合,力求在更短的时间内做出更精确的预测。12月16日启动的今年首次空气重污染红色预警,预计到12月21日夜间起逐步改善。 这几天,北京笼罩在团团浓雾中。12月16日,北京市发布了 2016 年首个雾霾红色预警,这意味着将连续 4 天以上出现重度及以上级别的空气污染。据新闻报道,北京已有 1200 家工厂停工或减少生产。 不只是北京,根据 2015 年世界卫生组织的全球疾病负担研究,2015 年大气悬浮颗粒物(不包括烟草烟雾)相
新智元
2018/03/26
1.1K0
红色预警尚未结束,北京启用机器学习预测空气污染
5g DTU 无线数传终端应用
DTU无线数传终端TD210全网通2G/3G/4G网络,实现串口数据与IP数据的转换,DTU作为串口数据的无线终端设备,可广泛应用于各行各业。
星辰大海大星
2021/10/13
7760
5g DTU 无线数传终端应用
借助工业4G dtu实现对旧小区管网无线监测
我国已历经数十年的城市化发展建设,当前城镇化率已达约65%。但伴随岁月的洗礼,城市里一些早年建设的老旧小区基础设施日益老化,尤其是水电气、卫生、消防、排水等管网系统,因设施老化,不仅导致功能性变差,还平添了各种安全隐患。
智慧物联小马
2023/12/01
1510
借助工业4G dtu实现对旧小区管网无线监测
「嘉年华观会」技术方案怎么讲
十八大以来,党中央、国务院把生态文明建设和生态环境保护摆在更加重要的战略位置,党的十九大明确指出必须树立和践行绿水青山就是金山银山的两山策略;2021年3月《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》明确:深入打好污染防治攻坚战,建立健全环境治理体系,推进精准、科学、依法、系统治污,协同推进减污降碳,不断改善空气、水环境质量,有效管控土壤污染风险。
爱艺江河科技
2024/09/19
862
[独家]大数据版穹顶之下:清华人气男模解码雾霾分布
【本期嘉宾】 【导读】:柴静的一部穹顶之下将对雾霾的讨论推到风口浪尖,与此同时在太平洋的另一端,一群来自中国大陆的合伙人也在针对雾霾展开一场大数据战场的较量。 怎样的“个人恩怨”引发了针对雾霾的创业
大数据文摘
2018/05/21
8770
好文速递:从Terra测得的空气污染趋势:工业区、易燃区和本地值区域的CO和AOD
摘要:在过去的研究中使用卫星观测来量化全球一氧化碳(CO)的年代际趋势之后,我们更新了估计并发现2002年至2018年之间每年CO趋势的柱量约为−0.50%,与进行的分析相比,这是一个减速度每年发现-1%的较短记录。火灾和人为源共同产生的气溶胶与一氧化碳共排放,但寿命比一氧化碳要短。结合空间趋势分析和从太空测量气溶胶光学深度(AOD)有助于诊断CO趋势中区域差异的驱动因素。我们使用对流层污染测量(MOPITT)中CO的长期记录以及中分辨率成像光谱仪(MODIS)中的AOD的长期记录。其他在热红外,AIRS,TES,IASI和CrIS中测量CO的卫星仪器显示出一致的半球CO变异性,并证实了MOPITT CO进行的趋势分析的结果。2002年至2018年,半球和区域对趋势进行了检查,不确定性量化。CO和AOD记录分为两个子时段(2002年至2010年和2010年至2018年),以评估16年中的趋势变化。我们关注四个主要的人口中心:中国东北,印度北部,欧洲和美国东部,以及两个半球的易火地区。总体而言,与下半年相比,记录的上半年CO下降速度更快,而AOD趋势显示各地区之间的差异更大。我们发现空气质量管理政策对大气的影响。在中国东北发现的一氧化碳的大幅下降最初与燃烧效率的提高有关,随后从2010年起空气质量进一步提高。随着全球CO趋势的减弱,采用最小排放控制措施的工业区(例如印度北部)变得更具全球意义。我们还检查了每月百分比值的二氧化碳趋势,以了解季节性影响,并发现生物质燃烧的局部变化足以抵消全球大气二氧化碳下降趋势,特别是在夏末。
一个有趣的灵魂W
2021/04/29
4610
好文速递:从Terra测得的空气污染趋势:工业区、易燃区和本地值区域的CO和AOD
VOCs在线监测系统 自动监测 远程监控
VOCs,挥发性有机物。计讯物联VOCs在线报警监测系统,实现挥发性气体源头监测、过程控制、末端治理、精细管控,解决大气污染的难题,目标因子多参数采集,实时上报平台,数据清晰直观、精准,全面反映污染源排污情况以及污染处理设施运行情况。
星辰大海大星
2021/10/20
1.9K0
VOCs在线监测系统 自动监测 远程监控
基于边缘网关的智慧工地监测方案
边缘物联网技术为千行百业赋能,依托边缘计算的低延时、高效率、广适用优势,也为工程建设产业带来新的增长动力。
智慧物联小马
2023/10/08
2890
基于边缘网关的智慧工地监测方案
基于无线网关的多功能环境监测杆方案
我国幅员辽阔,地形地貌多样,针对环境资源的开发和保护,企业和国土部门对牧场,草场,动植物保护区、湖泊等广阔区域的环境状况监测都有广泛需求。包括监测荒漠侵蚀、绿化改造效果、土地质量、水气状况、温湿度状态等,对自然环境的数据采集和分析,关系到环境资源的高效合理利用。本方案主要介绍利用无线网关,搭建多功能环境监测杆,可以实现对自然环境数据的集中监测与传输。
智慧物联小马
2021/11/11
3570
基于无线网关的多功能环境监测杆方案
工业园区污染源在线监测 环保数据采集传输仪应用
工业园器废气、废水排放现象严重,如不严加管控监测将导致大气及水污染,甚至危害居民生命健康,重发展更重环保,工业制造可持续发展的道路一直是党中央高度重视的课题,计讯物联工业园区污染源在线监测,科技化管控解决环境污染的难题,做到治污监测、排污监测、大气质量水质量实时监测,打造青山绿水新园区。
星辰大海大星
2021/04/23
5340
工业园区污染源在线监测 环保数据采集传输仪应用
智慧路灯杆会用到哪些通信方式
智慧路灯杆系统的通信方式通常包括有线通信和无线通信。有线通信可采用光纤、网线、电力线载波等方式,且一般以光纤和网线为主,电力线载波为备选;无线通信可采用NB-IoT、3G/4G/5G、LoRa、ZigBee等方式。智慧路灯杆系统的各设备都需要联网,包括反馈数据、设备状态和下发控制指令等,佰马智慧路灯杆智能网关,同时支持有线和无线通信方式,实现智慧灯杆一站式入网上云。
智慧物联小马
2022/03/10
3980
智慧路灯杆会用到哪些通信方式
数采仪下工业污染源(废气)工况用电监测
以来我国工业制造污染情况严重,环境保护法对工业污染源废气排放提出要求。工业污染源废气工况用电监测解决废气排放监管治理的难题,使治理排放工作更趋科学化、智能化。
星辰大海大星
2021/11/30
2640
数采仪下工业污染源(废气)工况用电监测
物联网技术如何在环境保护行业中发挥作用?
物联网(IoT)在未来智慧城市中扮演着重要角色,物联网几乎可以用于政府公共服务的所有场景,以使城市环境更加环保。传感器支持的设备可以帮助监测环境对城市的影响,收集下水道、空气质量和垃圾的详细信息。这些设备也可以帮助监测森林、河流、湖泊和海洋。
用户2605137
2022/04/12
9890
物联网技术如何在环境保护行业中发挥作用?
政策指导科技赋能智慧环保可视化解决方案
山与水构筑了人类生活的自然环境,是生活中地平线上的天然风景。青山绿水,是最繁荣自然的一种良性生态,是人类可持续生存和发展的基础。
物联网数据可视化PaaS平台
2022/04/19
9740
政策指导科技赋能智慧环保可视化解决方案
推荐阅读
相关推荐
数据采集传输仪钢铁厂环境污染监测
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验