zoukankan      html  css  js  c++  java
  • require、缓存

    什么是require?

      -Node使用CommonJS模块规范,内置require函数用于加载模块文件

      -require的基本功能是>读入并执行一个javascript文件,然后返回该模块的exports对象

      -若没有发现指定模块,则报错

    自己实现require函数

      -定义模块

      

      -实现

      

      注释

      

    rquire扩展名

      --require加载文件时可以省略扩展名

    require加载文件规则

      -通过 ./ 或者 ../ 开头

        --按照相对路径从当前文件所在文件夹开始寻找模块

      -通过 / 开头

        --以系统根目录开始寻找模块

      -不以 ./ 或 / 开头,分为两种情况

        --表示加载的是一个默认提供的核心模块> 位于Node的系统安装目录中

        --从当前目录向上搜索node_modules目录中的文件

            ---如果自己定义一个模块在node_modules目录中,而加载时不以 ./ 或 / 开头,直接以文件名加载,无论node_modules在什么位置,都可以被加载到,因为当加载时会一直向上去找,一直到找不到为止,此加载符合就近原则

      -模块名称重复,系统模块的优先级别最高

    require不仅可以载入js模块,也可以载入JSON对象

      -加载json文件,大部分用于读取配置信息

      -require也可以加载文件夹,加载文件夹分为两种情况

        --若文件夹中不存在package.json,直接加载文件夹内的index.js文件

        --若package.json文件存在,则根据配置问价信息加载

     模块的缓存

      -第一次加载某个缓存时,Node会缓存该模块,以后再加载该模块,就直接从缓存取出该模块的module.exports属性(不会再执行该模块)

      -如果需要多次执行模块中的代码,一般可以让模块暴漏行为(函数)

      -模块的缓存可以通过require.cache拿到,同样也可以删除

    间的的测试缓存

      -模块

        --module.exports = new Date();

      -文件

        

      执行文件可以看到,得到的毫秒是不变的,说明已经缓存。

    清空缓存

      -在加载模块之前进行缓存的清楚

      

      -什么时候需要清楚缓存?

        --由于可以加载json数据,所以每次数据更新时,需要同步更新json数据,此时就需要清除缓存,一般都是对数据做清除缓存操作

     如果不需要缓存,可以将暴漏的属性改为暴漏方法(行为),因为暴漏的方法在每一次加载的时候都会执行,从而不会进行缓存。

  • 相关阅读:
    第十七天——类与类之间的关系(一)
    Eclipse替代keil
    ssm_crud 测试mapper生成结果
    ssm_crud mybatis-generator逆向生成
    ssm_crud 搭建项目
    ssm_crud 目录篇
    mybatis SQL语句 打印
    Caused by: java.lang.ClassNotFoundException: javax.servlet.SessionCookieConfig
    Caused by: java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be ope
    Spring Security开发安全的REST服务 下载
  • 原文地址:https://www.cnblogs.com/nordon-wang/p/6051630.html
Copyright © 2011-2022 走看看