zoukankan      html  css  js  c++  java
  • 插件开发

    插件化开发
    动态导入
    内建函数__import__()
    importlib.import_module()
    插件化变成技术
    依赖的技术
    加载的时机
    应用
    动态导入
    运行时,根据用户需要(提供字符串),找到模块的资源动态加载起来

    内建函数__import__()
    __import__(name, globals=None, locals=None, fromlist=(), level=0

    name,模块名
    import语句本质上就是调用的这个函数,但是不鼓励直接使用它。
    建议使用importlib.import_module()
    sys = __import__('sys')等价于import sys

    importlib.import_module()
    importlib.import_module(name, package=None)
    支持绝对导入和相对导入,如果是相对带入,package必须设置

    上面的例子就是插件化编程的核心代码

    插件化变成技术
    依赖的技术
    反射:运行时获取类型的信息,可以动态维护类型数据
    动态import:推荐使用importlib模块,实现动态import模块的能力
    多线程:可以开启一个线程,等待用户输入,从而加载指定名称的模块
    加载的时机
    程序启动时
    像pycharm这样的工具,需要很多组件,这些组件也可能是插件,启动的时候扫描固定的目录,加载插件
    程序运行中
    程序运行过程中,接受用户指定或请求,启动相应的插件
    两种方式有利弊,如果插件过多,会导致程序启动很慢,如果用户需要时再加载,插件太大或者依赖多时,插件也会启动慢

    所以先加载必须的、常用的插件,其他插件使用时,再动态载入较为好
    应用
    软件的设计不可能尽善尽美,或者在某些功能上,不可能做的专业,需要专业的客户自己增强。
    Noerpad++,它只需要做好一个文本编辑器就可以,其他增强功能都通过插件的方式提供

    瓶邪检查、HTML预览、正则插件等
    要定义规范,定义插件从哪里加载,如何加载、必须实现的功能等
    插件是把模块加载到系统中,运行它,增强当前系统功能,或者提供系统不具备的功能,往往插件技术应用在框架设计中。系统本身设计简单化、轻量级,实现基本功能后,其他功能通过插件加入进来,方便扩展

  • 相关阅读:
    git的版本回退
    elementui的表格有多选框时翻页记住之前选择的数据
    git操作总结
    POJ 3107 Godfather
    HDU 4405 Aeroplane chess
    ZOJ 3626 Treasure Hunt I
    UVA 10537 Toll! Revisited
    POJ 3093 Margaritas on the River Walk
    POJ 1655 Balancing Act
    POJ 2342 Anniversary party
  • 原文地址:https://www.cnblogs.com/jxhp/p/14667569.html
Copyright © 2011-2022 走看看