精华内容
下载资源
问答
  • javascript模块系统

    千次阅读 2021-02-28 08:36:32
    很久以前,js只是简单的作为浏览器的交互操作而存在,一般都是非常短小的脚本,所以都是独立存在的。 但是随着现代浏览器的发展,特别是nodejs的出现,js可以做的事情变得...今天将会给大家介绍一下js模块系统。

    简介

    在很久以前,js只是简单的作为浏览器的交互操作而存在,一般都是非常短小的脚本,所以都是独立存在的。

    但是随着现代浏览器的发展,特别是nodejs的出现,js可以做的事情变得越来越多也越来越复杂。于是我们就需要模块系统来组织不同用途的脚本,进行逻辑的区分和引用。

    今天将会给大家介绍一下js中的模块系统。

    CommonJS和Nodejs

    CommonJS是由Mozilla公司在2009年1月份提出来了。没错,就是那个firfox的公司。

    最初的名字叫做ServerJS,在2009年8月的时候为了表示这个标准的通用性,改名为CommonJS。

    CommonJS最主要的应用就是服务端的nodejs了。浏览器端是不直接支持CommonJS的,如果要在浏览器端使用,则需要进行转换。

    CommonJS使用require()来引入模块,使用module.exports来导出模块。

    我们看一个CommonJS的例子:

    require("module"); 
    require("../file.js"); 
    exports.doStuff = function() {}; 
    module.exports = someValue;
    

    注意,CommonJS是同步加载的。

    AMD异步模块加载

    AMD的全称是Asynchronous Module Definition 。它提供了一个异步加载模块的模式。

    AMD是RequireJS在推广过程中对模块定义的规范化产出。

    异步加载的好处就是可以在需要使用模块的时候再进行加载,从而减少了一次性全部加载的时间,尤其是在浏览器端,可以提升用户的体验。

    看下AMD加载模块的定义:

     define(id?, dependencies?, factory);
    

    AMD是通过define来定义和加载依赖模块的。

    其中id表示要定义的模块的名字,dependencies表示这个模块的依赖模块,factory是一个函数,用来初始化模块或者对象。

    我们看一个例子:

       define("alpha", ["require", "exports", "beta"], function (require, exports, beta) {
           exports.verb = function() {
               return beta.verb();
               //Or:
               return require("beta").verb();
           }
       });
    

    这个例子中,我们定义了一个alpha模块,这个模块需要依赖"require", “exports”, "beta"三个模块。

    并且在factory中导出了beta模块的verb方法。

    define中id和dependencies都不是必须的:

    //无id
      define(["alpha"], function (alpha) {
           return {
             verb: function(){
               return alpha.verb() + 2;
             }
           };
       });
    
    //无依赖
       define({
         add: function(x, y){
           return x + y;
         }
       });
    

    甚至我们可以在AMD中使用CommonJS:

       define(function (require, exports, module) {
         var a = require('a'),
             b = require('b');
    
         exports.action = function () {};
       });
    

    定义完之后,AMD使用require来加载模块:

    require([dependencies], function(){});
    

    第一个参数是依赖模块,第二个参数是回调函数,会在前面的依赖模块都加载完毕之后进行调用。加载的模块会以参数形式传入该函数,从而在回调函数内部就可以使用这些模块。

    require(["module", "../file"], function(module, file) { /* ... */ }); 
    

    require加载模块是异步加载的,但是后面的回调函数只会在所有的模块都加载完毕之后才运行。

    CMD

    CMD是SeaJS在推广过程中对模块定义的规范化产出。它的全称是Common Module Definition。

    CMD也是使用define来定义模块的,CMD推崇一个文件作为一个模块:

    define(id?, deps?, factory)
    

    看起来和AMD的define很类似,都有id,依赖模块和factory。

    这里的factory是一个函数,带有三个参数,function(require, exports, module)

    我们可以在factory中通过require来加载需要使用的模块,通过exports来导出对外暴露的模块,module表示的是当前模块。

    我们看一个例子:

    // 定义模块  myModule.js
    define(function(require, exports, module) {
      var $ = require('jquery.js')
      $('div').addClass('active');
    });
    
    // 加载模块
    seajs.use(['myModule.js'], function(my){
    
    });
    

    所以总结下AMD和CMD的区别就是,AMD前置要加载的依赖模块,在定义模块的时候就要声明其依赖的模块。

    而CMD加载完某个依赖模块后并不执行,只是下载而已,只有在用到的时候才使用require进行执行。

    ES modules和现代浏览器

    ES6和现代浏览器对模块化的支持是通过import和export来实现的。

    首先看下import和export在浏览器中支持的情况:

    首先我们看下怎么使用export导出要暴露的变量或者方法:

    
    export const name = 'square';
    
    export function draw(ctx, length, x, y, color) {
      ctx.fillStyle = color;
      ctx.fillRect(x, y, length, length);
    
      return {
        length: length,
        x: x,
        y: y,
        color: color
      };
    }
    

    基本上,我们可以使用export导出var, let, const变量或者function甚至class。前提是这些变量或者函数处于top-level。

    更简单的办法就是将所有要export的放在一行表示:

    export { name, draw, reportArea, reportPerimeter };
    

    export实际上有两种方式,named和default。上面的例子中的export是named格式,因为都有自己的名字。

    下面看下怎么使用export导出默认的值:

    // export feature declared earlier as default
    export { myFunction as default };
    
    // export individual features as default
    export default function () { ... } 
    export default class { .. }
    

    named可以导出多个对象,而default只可以导出一个对象。

    导出之后,我们就可以使用import来导入了:

    import { name, draw, reportArea, reportPerimeter } from './modules/square.js';
    

    如果导出的时候选择的是default,那么我们在import的时候可以使用任何名字:

    // file test.js
    let k; export default k = 12;
    
    // some other file
    import m from './test'; // 因为导出的是default,所以这里我们可以使用import m来引入
    console.log(m);        // will log 12
    

    我们可以在一个module中使用import和export从不同的模块中导入,然后在同一个模块中导出,这样第三方程序只需要导入这一个模块即可。

    export { default as function1,
             function2 } from 'bar.js';
    

    上面的export from 等价于:

    import { default as function1,
             function2 } from 'bar.js';
    export { function1, function2 };
    

    上面的例子中,我们需要分别import function1 function2才能够使用,实际上,我们可以使用下面的方式将所有的import作为Module对象的属性:

    import * as Module from './modules/module.js';
    
    Module.function1()
    Module.function2()
    

    然后function1,function2就变成了Module的属性,直接使用即可。

    在HTML中使用module和要注意的问题

    怎么在HTML中引入module呢?我们有两种方式,第一种是使用src选项:

    <script type="module" src="main.js"></script>
    

    第二种直接把module的内容放到script标签中。

    <script type="module">
      /* JavaScript module code here */
    </script>
    

    注意,两种script标签的类型都是module。

    在使用script来加载module的时候,默认就是defer的,所以不需要显示加上defer属性。

    如果你在测试的时候使用file:// 来加载本地文件的话,因为JS模块安全性的要求,很有可能得到一个CORS错误。

    最后,import() 还可以作为函数使用,来动态加载模块:

    squareBtn.addEventListener('click', () => {
      import('./modules/square.js').then((Module) => {
        let square1 = new Module.Square(myCanvas.ctx, myCanvas.listId, 50, 50, 100, 'blue');
        square1.draw();
        square1.reportArea();
        square1.reportPerimeter();
      })
    });
    

    本文作者:flydean程序那些事

    本文链接:http://www.flydean.com/js-modules/

    本文来源:flydean的博客

    欢迎关注我的公众号:「程序那些事」最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

    展开全文
  • Adobe Acrobat Pro安装许可模块安装失败

    万次阅读 2018-06-07 12:20:28
    若出现“Acrobat 许可模块安装失败”,请先删除AAM文件目录后再安装。 C:\Program Files (x86)\Common Files\Adobe\OOBE (请先终止AAM常驻进程 AdobeIPCBroker.exe) 如图: 2.解决方法: 说明:删除上...

    1.问题描述:
    若出现“Acrobat 许可模块安装失败”,请先删除AAM文件目录后再安装。
    C:\Program Files (x86)\Common Files\Adobe\OOBE
    (请先终止AAM常驻进程 AdobeIPCBroker.exe)
    如图:这里写图片描述
    这里写图片描述
    2.解决方法:
    这里写图片描述
    这里写图片描述
    说明:删除上图的文件夹即可。重点内容
    3.安装过程:

    1
    这里写图片描述
    这里写图片描述
    yes完成!!!!!!!!!!!!!!!!!!

    展开全文
  • nginx 安装第三方模块

    千次阅读 2019-02-20 17:23:49
    nginx内部是由一些核心和非核心的第三方模块构成,模块化可以通过集成第三方模块实现扩展功能。 核心模块 ngx_http_core_module 标准模块 http模块 第三方模块 默认支持的模块 ngx_http_core_module 模块:...

    nginx内部是由一些核心和非核心的第三方模块构成,模块化可以通过集成第三方模块实现扩展功能。

    1. 核心模块 ngx_http_core_module
    2. 标准模块 http模块
    3. 第三方模块

    默认支持的模块
    ngx_http_core_module 模块:包括 nginx.conf 中的 http段中的 server 配置 、 location 配置 、 error_page 配置等。
    ngx_http_access_module 访问控制模块 location中配置 deny all;屏蔽所有用户的 访问 ,如果 访问会提示 403 ( allow all 就是允许所有人访问) ,deny address 可以实现 对某个客户address 访问的控制。
    配置格式:
    allow address | CIDR | unix: | all;
    deny address | CIDR | unix: | all;

    如何添加第三方模块
    nginx不支持动态安装加载模块 所以必须重新编译。可能导致原来的配置被覆盖。为了避免原来的配置被覆盖 需要按照如下操作。(如果是第一次安装或者不用考虑第一次安装被覆盖的情况 则略过以下操作 正常make install安装即可)

    1、重新安装时 第一次安装时 做的配置(比如编译时的 --prefix 参数等)必须都进行配置,通过nginx -V 可以查看安装时的配置。比如上次安装事 指定了安装目录 这次也必须指定。

    2、不能直接 make install

    三方模块安装方法

    1、configure make 编译 (add-module 和 with两种方式)
    ./configure --prefix=/安装目录 --add-module = /第三方模块的目录
    ./configure --prefix=/data/program/nginx --with-http_stub_status_module --with-http_random_index_module
    make
    2、make 完成后复制并替换 cp objs/nginx $nginx_home/sbin/nginx

    我这里重新安装 不考虑原版本 并且安装 两个模块 http_stub_status_module 和 http_random_index_module

    1 ./configure --prefix=/usr/apps/nginx --with-http_stub_status_module --with-http_random_index_module

    2、make && make install

    3、到安装目录 运行 sbin/nginx 即可启动nginx

    两个模块的功能介绍
    http_stub_status_module 可以监控 nginx状态
    http_random_index_module 可以随机返回多个主页中的一个。

    1、http_stub_status_module 配置
    vi conf/nginx.conf server配置 中 增加 如下location配置

    location /status {
    stub_status;
    }

    保存 退出 并重新加载配置
    nginx -s reload

    浏览器访问 http://192.168.68.137/status 可以看到nginx 状态信息如下:
    在这里插入图片描述
    Active connections:当前状态,活动状态的连接数
    accepts:统计总值,已经接受的客户端请求的总数
    handled:统计总值,已经处理完成的客户端请求的总数
    requests:统计总值,客户端发来的总的请求数
    Reading:当前状态,正在读取客户端请求报文首部的连接的连接数
    Writing:当前状态,正在向客户端发送响应报文过程中的连接数
    Waiting:当前状态,正在等待客户端发出请求的空闲连接数

    2、http_random_index_module 配置
    vi nginx.conf 默认location配置中增加 random_index on (默认为off)

    location / {
        root   html;
        random_index on;
        index  index.html index.htm;
    }
    

    保存 退出 并重新加载配置 nginx -s reload
    同时 保证html目录中有多个html文件。

    [root@zk03 html]# ll
    总用量 12
    -rw-r--r--. 1 root root 537 1月  23 17:42 50x.html
    -rw-r--r--. 1 root root  11 1月  23 17:55 haha.html
    -rw-r--r--. 1 root root 612 1月  23 17:42 index.html
    

    访问nginx首页 有时候 出现 index.html 有时候出现haha.html 如下:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 不管什么地方,什么时候,学习是快速提升自己的能力的一种体现!!!!!!!!!!!之前一直听说Python是一门非常好用而又强大的编程语言,但是都没有去学习,虽然自己知道作为一名程序猿掌握多一门语言是提升自己价值的必要...


    不管在什么地方,什么时候,学习是快速提升自己的能力的一种体现!!!!!!!!!!!


    之前一直听说Python是一门非常好用而又强大的编程语言,但是都没有去学习,虽然自己知道作为一名程序猿掌握多一门语言是提升自己价值的必要条件之一,可是自己比较懒,都没有去学习.现在应公司需求用到Python开发项目,才得以有时间去学习(似乎这个理由有些牵强,懒就懒嘛还说的那么高尚)偷笑,虽然编程语言有很多语法都比较相近,到第一正式接触Python的我编写起来还是有点不习惯的,老是用Java的方式去写,时不时给它加个中括号,提前定义变量类型什么的抓狂,好了不啰嗦了,还是直接进入正题吧!


    我的环境:

    win10(x64),

    Python2.7.13(最新的pyhton2.7版64位),

    oracle10g(32位)

    因为我之前一直装不了64位的oracle10g,老是出现各种各样的问题,我就不装oracle10g64位的了,不过前两天已经解决了 win7和Windows server2008下安装64位的oracle10g的问题也成功安装了,如果之前也出现安装不了oracle10g64位的伙伴们可以参考下我另一篇文章:http://blog.csdn.net/hui_2016/article/details/76176871,win10 安装应该也是可以的,如果你们安装成功了可以留言告知我,希望对你们有所帮助


    Python操作oracle数据库需要用到cx_Oracle模块所以需要去下载cx_Oracle.

    请注意:下载的cx_Oracle安装文件一定要跟pyhton的位数和版本一致,pyhton的位数最好是跟系统位数一致,不然有可能会出现各种各样的错误,我之前就是这样碰壁过来的

    安装cx_Oracle前请先安装Python,也贴出图吧,不知道这样会不会有点啰嗦

    去官网下载Python



    开始安装




    如果跳出下图点是



    现在测试下Python  在cmd命令行下输入 python  如图就成功安装了



    下面贴出下载cx_Oracle的过程图,本文章需要下载文件的连接在文章末尾我会贴出来供大家下载




    开始安装cx_Oracle


    测试cx_Oracle   这时会报出个错误  ImportError: DLL load failed:找不到指定的模块  如下图:




    原因是因为少了某些DLL模块,现在我们解决这个问题:  需要下载oracle的客户端:

    下载过程图:




    下载了之后解压结果如上图的 instantclient_10_2目录,打开此目录将里面的所有的 *.dll文件拷到pyhton安装目录下的Lib\site-packages目录下   例:我的路径 C:\Python27\Lib\site-packages


    复制进去之后再次import cx_Oracle就不会报错了,也说明模块安装成功 如下图




    恭喜大家现在可以操作oracle了,如果还在安装的过程中遇到什么问题可以留言给我,我看到会第一时间回复大家!

    连接数据库的常用两种方式
    方式一:用户名、密码和监听写在一起

    import cx_Oracle

    db=cx_Oracle.connect('username/password@host/orcl')

    db.close()

     
    方式二:用户名、密码和监听分开写

    import cx_Oracle

    db=cx_Oracle.connect('username','password','host/orcl')

    db.close()


    下面是Python操作oracle的小示例


    #导入cx_Oracle模块
    import cx_Oracle
    #连接oracle数据库
    conn=cx_Oracle.connect('username/password@host/orcl')
    #创建cursor
    cr = conn.cursor()
    #sql语句  

    sql="select * from "tableName"

    recr = cr.execute(sql)#执行sql语句

    #一次返回所有的结果集使用 fetchall
    results = recr.fetchall()
    for re in results:
        print "结果为: %s " %re
        
    #一次返回一行 fetchone
    while(1):
        re = cr.fetchone()
        if re==None:
            break
        print re
        
    cr.close()
    db.close()


    Python下载链接:https://www.python.org/downloads/windows/

    cx_Orcale 下载链接:https://sourceforge.net/projects/cx-oracle/files/5.1.2/

    instantclient下载链接:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

    (注:下载instantclient需要注册oracle账户才能下载)

    如果此文章有什么不对的地方请路过的大神指出,以免误人子弟!!!


    尊重原创,如要转载请注明出处!!!


    展开全文
  • 问题:  因为要用python爬取动态页面,通过这篇文章http://blog.csdn.net/jamesxu182/article/details/38171217#0-tsina-1-41780-397232819ff9a47a7b7e80a40613cfe1知道了使用Spynner...花了很长时间windows上的安装
  • 然而linux下,事情往往不如我所愿,特别是编译一些大型的开源项目,比如u-boot、linux内核、qt等程序的源码时,一方面本身这些代码的规模就极其庞大,就算所有模块全部没有警告,仅仅是编译输出的其...
  • 本章主要描述IDEA,如何构建多模块的Maven项目。 多模块Maven项目 为了便于统一的版本维护和管理,经常会用到Maven的多模块模式。 本文以以下模块结构为例,对如何创建多模块Maven项目进行描述。 构建主...
  • 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的~1. 首先嘛,你得浏览器里输入要网址:2. 浏览器查找域名的IP地址导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:* ...
  • 但有的时候也会有一些稍微麻烦一点的可能会需要绕点弯路,今天使用idea为ide工具编写maven项目的过程中,我碰到了有的包maven远程仓库没有的问题,网上很少找到多模块的搭建的过程,一般有的都是那种直接放在lib...
  • 无监督信息抽取较多都是使用哈工大的ltp作为底层框架。那么基于ltp其实有了非常多的小伙伴进行了尝试,笔者私自将其归纳为: 事件抽取(三元组) 观点抽取 “语言云” 以哈工大社会计算与信息检索研究中心研发的 ...
  • 使用Maven多模块结构工程时,配置版本是一个比较头疼的。继承版本,依赖版本,自身版本,都需要单独定义,很是麻烦。 版本号变更使用mvn versions:set,有时候也可能导致版本号不一致、不便于统一管理: ...
  • 第一次写技术文章,没啥高深的内容,只是作为一个python的初学者,在安装第三方模块matplotlib的过程中遇到了好多问题,想把这些问题和它的解决方法记录下来,一方面以后自己忘记的时候能找出来看看,另一方面也希望...
  • 常用的python模块安装方法

    千次阅读 2015-03-04 11:21:21
    adodb:我们领导推荐的数据库连接组件 bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherrypy:一个WEB framework ctypes:用来调用动态链接库 DBUtils:数据库连接池 ...
  • 准备放下R开始学python,...这个IDE下载模块比较方面,非常快 pycharm的下载与pandas安装:http://bbs.pinggu.org/thread-3633477-1-1.html pycharm官方教学视频:链接:http://pan.baidu.com/s/1sl3WfGL 密码:03ho
  • python3 基础总结及模块安装

    千次阅读 2014-10-27 15:02:08
     由于python是动态语言,变量不用申明,所以成员变量直接出现初始化过程私有变量或者私有成员函数用‘__’两个下划线表示,类的初始化和私有变量如下: class AB: Num = 0 def __init__...
  • 此时,我们需要管理员权限来执行操作,因此请在提示框(其中将填入您在安装时设置的用户名和主机名)键入: treadstone @blackbriar : $ su 密码: “su”命令将为您提供根用户权限,所以您需要提供在安装时创建...
  • matlab simulink自定义结构体变量并函数模块中应用

    千次阅读 多人点赞 2019-05-15 21:34:58
    前段时间“硬着头皮”给一个simulink模型添加了一个函数模块,函数的输出是4个结构体变量,因此涉及到simulink自定义结构体类型的变量,以及显示输出的结构体变量。 完成这一任务的过程还是费了一些劲的,...
  • Android 开发:由模块化到组件化(一)

    万次阅读 多人点赞 2016-12-15 01:43:15
    当你看到这的时候,想必心理一阵恶寒:模块化?组件化?到底是什么鬼?有啥区别. 有这种感觉才是对的,模块化和组件化本质思想是一样的,都是"大化小",两者的目的都是为了重用和解耦,只是叫法不一样.如果非要说区别,那么...
  • wxpython下载安装过程

    万次阅读 2017-09-15 19:41:59
    wxPython介绍 1.wxPython是Python语言的一套优秀的GUI图形库。wxPython可以很方便的创建完整的、功能键全的GUI用户... 2.wxPython是跨平台的,可以不修改程序的情况下多种平台上运行。目前支持的平台有Win32/Wi
  • 安装Ubuntu后必须要做的几件(一)--基础应用篇

    万次阅读 多人点赞 2015-09-14 18:59:23
    更新软件源装好ubuntu的第一件就是添加更快速的源,因为官方提供的源服务器国外,访问和下载速度要比国内源慢些,可以采用一些国内公司和大学提供的更新源.方法一(图形界面方法)打开Ubunto软件中心 编辑(E)...
  • Xpoded模块开发教程

    千次阅读 2016-08-18 20:38:52
    Xpoded模块开发教程 当然,你可以去学习如何创建一个Xposed模块。所以你可以阅读这篇教程(官方教程)去学习怎样解决这个问题。这不仅仅讲解如何新建模块、如何编写模块,我们要往更深处思考,为什么按照这些步骤...
  • 十、模块 原文:Modules 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 编写易于删除,而不是易于扩展的代码。 Tef,《Programming is Terrible》 理想的程序拥有清晰的结构。 它的...
  • 如何正确安装驱动程序

    千次阅读 2015-03-25 17:09:26
     当你为你的电脑重新安装了操作系统之后,首先要做的一件就是安装正确的驱动程序。刚装完操作系统之后,你会Windows的设备管理器(右键点击“我的电脑”依次选择“属性”-“硬件”-“设备管理器”即可访问到)...
  • VBA--类模块学习

    万次阅读 多人点赞 2019-05-30 13:52:18
    不废话,从基础开始学VBA的类模块。 主要分下面几个部分: 1.什么是类 2.为什么要学习类 3.类的预备知识 4.创建类属性 5.创建类方法 6.创建类事件 7.一个完整的类实例 8.未完的结尾 什么是类 我们身边...
  • 目录 目录 模块概念 对module的理解 Module的查找路径 与package关系 ...模块导入 ...重新导入模块 ...import语句使用以下几种方式导入包模块: 从 * 导入包 下面这个语句只会执行Graphics目录下的init.py...
  • 利用setup.pypypi上发布自己的模块
  • 出现的问题是,Maven项目创建Module后,pom文件没有自动生成下图的parent 下面放上我创建Module的过程 第一步: 第二步: 第三步: 中间省略了两步,直接next创建项目,首先先看父项目的pom文件已经显示...
  • 本文将从实际项目遇到的问题出发,讲述模块化能解决哪些问题,以及如何使用 Sea.js 进行前端的模块化开发。恼人的命名冲突我们从一个简单的习惯出发。我做项目时,常常会将一些通用的、底层的功能抽象出来,独立成...
  • 整个通信模块的发展历史,是一部半导体核心器件的国产化历史。 从法国的wavecom,德国的... (本文描述的是发展历史最为悠久的GPRS模块,WiFi、蓝牙模块本文的阐述范围。) 一、wavecom:物联网模块的奠基人 ...
  • 学生信息管理系统之模块的理解

    千次阅读 多人点赞 2012-08-20 11:41:10
    '传递参数SQL传递查询语句,MsgString传递查询信息。自身以一个数据集对象的形式返回 Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset Dim Cnn As ADODB.Connection '...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 203,093
精华内容 81,237
关键字:

在信息模块的安装过程中正确的事