(“使用npm.js依赖项和transpile es2015+”的django包,)

django-npm-mjs的Python项目详细描述


Django NPM MJS

使用npm.js依赖项和transpile es2015+的django包

fidus writer使用这个包来捆绑javascript。我们尽量保持它的通用性,因此,如果有什么东西看起来非常奇怪和具体的fidus作家,这很可能只是我们的疏忽。请联系我们,我们会看看我们能做些什么。

这个包类似于django压缩器,它在javascript文件提供给用户之前处理它们。但也有一些不同:

  • 它不会混合不同的javascript模块条目文件。它只打包从一个条目文件导入的所有内容。使用es2015+时,不需要在全局命名空间中运行大量javascript文件。

  • 它允许从一个django应用程序导入到同一个项目中的另一个应用程序,就像它们在同一个文件夹中一样,类似于django处理静态文件和模板的方式。

  • 它包括处理npm.js导入。

  • javascript条目文件的基本名称不会更改,并且添加了一个自动版本查询,以便能够擦除浏览器缓存(/js/my_file.mjs变为/js/my_file.js?v=239329884)。这样也可以从javascript引用url(例如用于web工作者)。

  • 它允许在django应用程序之间使用javascript插件钩子,当django项目可以与特定应用程序一起使用或不使用特定应用程序时,并且来自一个应用程序的javascript需要从另一个应用程序导入内容。

快速启动

  1. 安装“npm_mjs”

     pip install django-npm-mjs
    
  2. 将“npm_mjs”添加到已安装的应用程序设置中,如下所示:

     INSTALLED_APPS = [
         ...
         'npm_mjs',
     ]
    
  3. 在设置中将PROJECT_PATH定义为项目的根文件夹:

     PROJECT_PATH = os.path.realpath(os.path.join(os.path.dirname(__file__), '..'))
    
  4. 在设置中定义一个SETTINGS_PATHS以包含所有设置文件的路径(settings.py+任何本地设置.py或您可能已定义的类似文件):

     SETTINGS_PATHS = [os.path.dirname(__file__), ]
    
  5. PROJECT_PATH中的static-transpile文件夹添加到STATICFILES_DIRS中,如下所示:

     STATICFILES_DIRS = (
         os.path.join(PROJECT_PATH, 'static-transpile'),
         ...
     )
    
  6. 加载transfile,并使用static模板标记来引用javascript文件。 ES2015+模块的所有条目文件都需要有*.mjs结尾。条目可以如下所示:

     {% load transpile %}
     ...
     <script type="text/javascript" src="{% static "js/index.mjs" %}"></script>
    

使用static模板标记:

    <link type="text/css" rel="stylesheet" href="{% static "css/fonts.css" %}" />
  1. 运行./manage.py transpile

  2. 运行./manage.py runserver。您的ES2015+模块将作为与浏览器兼容的JS文件使用,所有静态文件都将以版本控制结尾,以便您可以将静态服务器设置为允许浏览器无限期缓存静态文件,只要Debug设置为False。

npm.js依赖项

  1. 将package.json文件添加到一个或多个应用程序中。所有package.json文件都将被合并。

  2. 从package.json文件中指定的任何npm模块导入js文件。

  3. 运行./manage.py transpile

  4. 运行./manage.py runserver

参考javascript源代码中的transpile版本

在javascript源代码中,您可以引用上次transfile运行的版本字符串,如下所示:

    process.env.TRANSPILE_VERSION

例如:

    let downloadJS = `download.js?v=${process.env.TRANSPILE_VERSION}` // Latest version of transpiled version of download.mjs

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spinner选定值未上载到firebase数据库   java如何通过bukkit中的配置添加消息?   java在SharedReference中保存列表的泛型类型   javascript Java小程序未定义   swt在Java中构建控制台应用程序   java OAuth同意屏幕没有突然显示,没有错误?   java webview选择文件安卓不工作   java Spring boot JPA如何从同一连接添加多个数据库?   java JDBC DB2驱动程序计时器线程处于阻塞状态   java我在vscode中运行flatter时看到一个错误在phone中运行应用程序somone能否帮助我plz   Java:生成JSON:如何避免生成不完整的JSON   java Date compareTo()方法始终返回1   当使用Junit runner运行测试时,java Spring自动连线失败   java Android/Sockets如何将信息从主UI线程发送到socket线程?   java Android内存声明全局变量   java如何在JBoss中拥有多个具有相同JNDI名称的数据源?   python在Java中嵌入CPython时,为什么会挂起?   java如何提供深度模拟对象?   java“find:smallint,expected:integer”Hibernate对informix数据库的验证在短时间内失败