MES系统对于企业转型升级的积极作用

一、为什么要用require.js?

最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了。后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载。下面的网页代码,相信很多人都见过。

  <script src="1.js"></script>
  <script
src="2.js"></script>
  <script
src="3.js"></script>
  <script
src="4.js"></script>
  <script
src="5.js"></script>
  <script
src="6.js"></script>

这段代码依次加载多个js文件。

这样的写法有很大的缺点。首先,加载的时候,浏览器会停止网页渲染,加载文件越多,网页失去响应的时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例的1.js要在2.js的前面),依赖性最大的模块一定要放到最后加载,当依赖关系很复杂的时候,代码的编写和维护都会变得困难。

require.js的诞生,就是为了解决这两个问题:

  

  (1)实现js文件的异步加载,避免网页失去响应;

  (2)管理模块之间的依赖性,便于代码的编写和维护。

二、require.js的加载

使用require.js的第一步,是先去官方网站下载最新版本。

下载后,假定把它放在js子目录下面,就可以加载了。

  <script src="js/require.js"></script>

有人可能会想到,加载这个文件,也可能造成网页失去响应。解决办法有两个,一个是把它放在网页底部加载,另一个是写成下面这样:

  <script src="js/require.js" defer
async="true" ></script>

async属性表明这个文件需要异步加载,避免网页失去响应。IE不支持这个属性,只支持defer,所以把defer也写上。

加载require.js以后,下一步就要加载我们自己的代码了。假定我们自己的代码文件是main.js,也放在js目录下面。那么,只需要写成下面这样就行了:

  <script
src="js/require.js" data-main="js/main"></script>

data-main属性的作用是,指定网页程序的主模块。在上例中,就是js目录下面的main.js,这个文件会第一个被require.js加载。由于require.js默认的文件后缀名是js,所以可以把main.js简写成main。

三、主模块的写法

上一节的main.js,我把它称为"主模块",意思是整个网页的入口代码。它有点像C语言的main()函数,所有代码都从这儿开始运行。

下面就来看,怎么写main.js。

如果我们的代码不依赖任何其他模块,那么可以直接写入javascript代码。

  // main.js

  alert("加载成功!");

但这样的话,就没必要使用require.js了。真正常见的情况是,主模块依赖于其他模块,这时就要使用AMD规范定义的的require()函数。

  // main.js

  require([‘moduleA‘, ‘moduleB‘, ‘moduleC‘], function (moduleA, moduleB,
moduleC){

    // some code here

  });

require()函数接受两个参数。第一个参数是一个数组,表示所依赖的模块,上例就是[‘moduleA‘, ‘moduleB‘,
‘moduleC‘],即主模块依赖这三个模块;第二个参数是一个回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模块会以参数形式传入该函数,从而在回调函数内部就可以使用这些模块。

require()异步加载moduleA,moduleB和moduleC,浏览器不会失去响应;它指定的回调函数,只有前面的模块都加载成功后,才会运行,解决了依赖性的问题。

下面,我们看一个实际的例子。

假定主模块依赖jquery、underscore和backbone这三个模块,main.js就可以这样写:

  require([‘jquery‘, ‘underscore‘, ‘backbone‘], function ($, _,
Backbone){

    // some code here

  });

require.js会先加载jQuery、underscore和backbone,然后再运行回调函数。主模块的代码就写在回调函数中。

四、模块的加载

上一节最后的示例中,主模块的依赖模块是[‘jquery‘, ‘underscore‘,
‘backbone‘]。默认情况下,require.js假定这三个模块与main.js在同一个目录,文件名分别为jquery.js,underscore.js和backbone.js,然后自动加载。

使用require.config()方法,我们可以对模块的加载行为进行自定义。require.config()就写在主模块(main.js)的头部。参数就是一个对象,这个对象的paths属性指定各个模块的加载路径。

  require.config({

    paths: {

      "jquery": "jquery.min",
      "underscore":
"underscore.min",
      "backbone": "backbone.min"

    }

  });

上面的代码给出了三个模块的文件名,路径默认与main.js在同一个目录(js子目录)。如果这些模块在其他目录,比如js/lib目录,则有两种写法。一种是逐一指定路径。

  require.config({

    paths: {

      "jquery": "lib/jquery.min",
      "underscore":
"lib/underscore.min",
      "backbone":
"lib/backbone.min"

    }

  });

另一种则是直接改变基目录(baseUrl)。

  require.config({

    baseUrl: "js/lib",

    paths: {

      "jquery": "jquery.min",
      "underscore":
"underscore.min",
      "backbone": "backbone.min"

    }

  });

如果某个模块在另一台主机上,也可以直接指定它的网址,比如:

  require.config({

    paths: {

      "jquery":
"https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min"

    }

  });

require.js要求,每个模块是一个单独的js文件。这样的话,如果加载多个模块,就会发出多次HTTP请求,会影响网页的加载速度。因此,require.js提供了一个优化工具,当模块部署完毕以后,可以用这个工具将多个模块合并在一个文件中,减少HTTP请求数。

五、AMD模块的写法

require.js加载的模块,采用AMD规范。也就是说,模块必须按照AMD的规定来写。

具体来说,就是模块必须采用特定的define()函数来定义。如果一个模块不依赖其他模块,那么可以直接定义在define()函数之中。

假定现在有一个math.js文件,它定义了一个math模块。那么,math.js就要这样写:

  // math.js

  define(function (){

    var add = function (x,y){

      return x+y;

    };

    return {

      add: add
    };

  });

加载方法如下:

  // main.js

  require([‘math‘], function (math){

    alert(math.add(1,1));

  });

如果这个模块还依赖其他模块,那么define()函数的第一个参数,必须是一个数组,指明该模块的依赖性。

  define([‘myLib‘], function(myLib){

    function foo(){

      myLib.doSomething();

    }

    return {

      foo : foo

    };

  });

当require()函数加载上面这个模块的时候,就会先加载myLib.js文件。

六、加载非规范的模块

理论上,require.js加载的模块,必须是按照AMD规范、用define()函数定义的模块。但是实际上,虽然已经有一部分流行的函数库(比如jQuery)符合AMD规范,更多的库并不符合。那么,require.js是否能够加载非规范的模块呢?

回答是可以的。

这样的模块在用require()加载之前,要先用require.config()方法,定义它们的一些特征。

举例来说,underscore和backbone这两个库,都没有采用AMD规范编写。如果要加载它们的话,必须先定义它们的特征。

  require.config({

    shim: {

      ‘underscore‘:{
        exports:
‘_‘
      },

      ‘backbone‘: {
        deps: [‘underscore‘,
‘jquery‘],
        exports: ‘Backbone‘
      }

    }

  });

require.config()接受一个配置对象,这个对象除了有前面说过的paths属性之外,还有一个shim属性,专门用来配置不兼容的模块。具体来说,每个模块要定义(1)exports值(输出的变量名),表明这个模块外部调用时的名称;(2)deps数组,表明该模块的依赖性。

比如,jQuery的插件可以这样定义:

  shim: {

    ‘jquery.scroll‘: {

      deps: [‘jquery‘],

      exports: ‘jQuery.fn.scroll‘

    }

  }

七、require.js插件

require.js还提供一系列插件,实现一些特定的功能。

domready插件,可以让回调函数在页面DOM结构加载完成后再运行。

  require([‘domready!‘], function (doc){

    // called once the DOM is ready

  });

text和image插件,则是允许require.js加载文本和图片文件。

  define([

    ‘text!review.txt‘,

    ‘image!cat.jpg‘

    ],

    function(review,cat){

      console.log(review);

      document.body.appendChild(cat);

    }

  );

类似的插件还有json和mdown,用于加载json文件和markdown文件。

MES系统对于企业转型升级的积极作用,布布扣,bubuko.com

时间: 2024-12-29 16:50:24

MES系统对于企业转型升级的积极作用的相关文章

MES系统助力企业转型升级

随着数字化技术的进步和发展,智能工厂请添加链接描述成为智能制造的工业基础,信息技术水平成为智能工厂发展的关键要素,MES系统可以帮助实现生产过程的数字化.系统化和高效化,从而帮助企业实现生产系统的转型升级,加快生产进程和新产品的更新速度,推动企业由简单的工业生产向满足客户个性化服务需求方向不断发展. MES系统请添加链接描述在智能工厂的构建过程中的功能主要体现在四个方面,即网络化功能.透明管理功能.无纸化功能和精确化功能,这四个方面也是智能工厂建设的最终目标,要实现这些功能的关键在于,MES系统

mes系统为企业带来多少好处?

由于MES系统反映了作业人员.机器.设备.物料和工具等资源的使用状态的实时信息,并就刚刚完工的作业活动向ERP和有关人员报告.因此,使用其中的资源状态管理功能,MES除能及时提供更详实的资源可用量信息,以便于向ERP进行更可行的资源计划,同时,也使有关人员不仅可及时了解到作业效率,资源效率等实际状况,还可以对作业中隐藏的问题,运作效率改善等进行及时的处理和更正. 通过生产单元分配功能的使用,MES能将生产产品的原物料连同作业指令一起送达相应的加工单元,以指令开始一个工序或工步的操作,极大地提高了

可视化运营管理--罗浮MES系统助力企业制造转型

近几年来,产能过剩与利润偏低一直是制造产业经历的"最深的痛",但是随着工业物联网技术的快速发展,以工厂大数据为核心价值的智能制造工厂应运而生,而借助智能工厂平台构建的可视化运营管理,更是使得智能工厂管理如虎添翼,运用可视化运营管理能否彻底打破目前工业领域面临的困境? 以低成本实现智能工厂安全.可持续生产.运营.维护和管理,需要快速获取与工厂实际状态一致的基础数据,智能工厂是实现这一目标的最佳手段.智能工厂是以数据为基础的信息管理平台;是一个以工厂设备基础数据为核心的数据仓库.智能工厂不

MES系统在企业不同发展阶段的部署

在现代经济社会,所有的企业都是要保持发展的,只一直进行一种经营模式的企业是很难在当下生存下去的.伴随着科技.经营环境.经营模式的快速变迁,企业需要有及时调节自身经营模式的适应能力和明确企业自身发展需求的判断能力.在考虑企业的可持续发展能力的时候,可以通过 MES系统 对四个不同的角度分别考虑来加强企业的信息化部署. 一.企业的规模 对于从企业规模角度考虑信息化部署是在四个层面中最重要的,因为企业得先了解自身的发展现状,明确企业的发展定位,再以此为基础制定相应的信息化策略.对于大中型企业,实现信息

罗浮云干货 | 如何应用MES系统改善企业生产

MES系统将信息化"触角"深入到车间底层,使制造企业对信息技术的应用更加深入.它专注于离散程度较高的制造企业,通过建设一项高度集成化和智能化的信息管理平台,帮助企业全面提高工厂的制造执行能力. 一.全面的生产能力平衡分析 在企业生产过程中,不同的人员和设备都有着不同的生产能力,不同的产品有着不同的生产能力需求,若采用同一种生产任务分配模式,容易造成车间生产能力与完成计划所需能力之间的不协调,直接导致车间生产现场混乱,且难以合理调整各工作中心的生产分配量. MES系统拥有最直观的图形和文

IBM新合作伙伴计划助力企业转型升级

IBM作为老牌企业,一直在引领者技术方面的变革.当IBM再一次从自我革新开始,期望能够更快的将认知计算和云推广给自己的合作伙伴和用户们,以帮助他们在新的转型期内,能够快人一步.   但是,我们所知的以往传统的合作伙伴模式已经不能更好的匹配现阶段的一些新情况.IBM自己也提出了对于合作伙伴计划的升级.在大会期间我采访到了IBM全球合作伙伴事业部.软件渠道副总裁Michael Gerentine,IBM全球合作伙伴事业部.硬件渠道副总裁Sergio Amoni以及IBM大中华区副总裁.全球合作伙伴事

MES系统在工业企业中的应用

制造执行系统(MES)是结合了工厂的人力.物力.机械设备.以及原材料等综合因素来保证生产产品的质量.数量和交货期的一款软件系统,这个系统是基于企业ERP 以及PCS 系统之间,全面针对生产管理技术与实时信息系统,它主要是对制造计划的执行,以及为计划管理层以及生产控制层提供一座桥梁,来连接两者之间的关系. 1.MES 系统对工业企业生产运行的意义      MES 系统构建的以生产为核心的高效率的信息管理平台,将各项数据都能够在统一的平台上进行告知,让工作人员能够第一时间了解企业的生产信息,能够实

为什么制造企业有了ERP系统还要部署MES系统?

如今制造企业管理中,企业需要的不仅仅是ERP软件提供供应链.资金流.客户销售.仓库货品.企业内部流程运转管理,更需要软件对于车间操作管理层面的指导与支持.大数据.智能制造.物联网.现场可视化等一系列新兴技术的迅速兴起,为制造企业实现智慧工厂4.0建设提供良好的技术支撑. 为提高车间生产效率.缩短生产周期.指导生产线操作流程.降低生产成本.消除人工操作误差,更多的制造工厂在已部署ERP的基础上,选择增加MES系统--制造企业生产过程执行系统来完善车间生产流程的精细化管理. 通常在使用MES系统前,

MES系统如何实现制造业智能制造生产

在如今工业互联网的背景下,制造业的全球竞争日趋激烈.制造业的竞争对手已经不再是一个单一的地区,而是来自越南和印度的挑战.如何实现我国制造业数字化.智能化的转型升级,重新获得制造业的声音,已经是迫在眉睫. 由于产品的复杂性几何增加,产品的制造时间缩短,对利润和质量的压力加大.现在企业已经开始考虑怎么样去缩短产品的生命周期,并且在与那些低成本.高性能制造能力的企业竞争中获得立足点.信息技术的不断发展给制造业带来了新的思路,大数据.云计算.物联网.3D打印和工业互联网等其他新技术的发展正在帮助企业从传