仲灏小栈 仲灏小栈
首页
大前端
后端&运维
其他技术
生活
关于我
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

仲灏

诚意, 正心, 格物, 致知
首页
大前端
后端&运维
其他技术
生活
关于我
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 《前端项目基础建设》
  • HTML&CSS

  • JavaScript&TypeScript

  • Node

  • 构建

  • Vue

  • React

  • 小程序

  • 跨端

  • Electron

  • WebGL&GIS

  • 浏览器

    • 在浏览器中直接使用npm包
    • 前端单页面应用实现服务端渲染
    • 快速测试某个请求在浏览器中是否跨域
    • 浏览器反debugger调试
    • 浏览器debugger反爬虫
    • 浏览器密码自动填充样式
  • 面经

  • 其他

  • 大前端
  • 浏览器
仲灏
2021-12-16

在浏览器中直接使用npm包

很多时候我门使用一个npm测试语句往往很麻烦,需要下载,引入一些步骤,如果不符合需求的还得移除这个包

现在可以在浏览器中直接使用了 npmInstall('moment')的方式在控制台进行调试

如 qs(具有一些附加安全性的查询字符串解析和字符串化库) 这个插件

  • 先初始化这个方法

    • // 存储原始传入的名称
      let pkg_name_origin = null;
      const npmInstall = (originName) => {
        // Trim string
        const name = originName.trim();
        pkg_name_origin = name;
        // 三种引入方式
        // 如果是一个有效的URL,直接通过<script />标签插入
        if (/^https?:\/\//.test(name)) return injectScript(name);
        // 如果指定了版本,尝试使用unpkg加载
        if (name.indexOf('@') !== -1) return unpkg(name);
        // 否则,尝试使用cdnjs搜索
        return cdnjs(name);
      };
      
      // 在页面中插入<script />标签
      const injectScript = (url) => {
        const script = document.createElement('script');
        script.src = url;
        script.onload = () => {
          console.log(pkg_name_origin, ' 安装成功。');
        };
        script.onerror = () => {
          console.log(pkg_name_origin, ' 安装失败。');
        };
        document.body.appendChild(script);
        // document.body.removeChild(script);
      };
      
      const unpkg = (name) => {
        injectScript(`https://unpkg.com/${name}`);
      };
      
      const cdnjs = async (name) => {
        const searchPromise = await fetch(
          `https://api.cdnjs.com/libraries?search=${name}`,
          // 不显示referrer的任何信息在请求头中
          { referrerPolicy: 'no-referrer' }
        );
        const { results, total } = await searchPromise.json();
        if (total === 0) {
          console.error('Sorry, ', name, ' not found, please try another keyword.');
          return;
        }
      
        // 取结果中最相关的一条
        const { name: exactName, latest: url } = results[0];
        if (name !== exactName) {
          console.log(name, ' not found, import ', exactName, ' instead.');
        }
        // 通过<script />标签插入
        injectScript(url);
      };
      
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
    • 如果不想每次都引用这个方法可以使用chrome插件

      • img
  • 在浏览器中控制台引入

    • npmInstall('qs') 或者使用插件的方式$i('qs')
    • image-20211216141438409
  • 测试使用, 我门调取一个qs api, 这里是使用Qs的变量

    • image-20211216142117167
上次更新: 2022/06/05, 20:31:36
Cesium 应用各类型地理数据
前端单页面应用实现服务端渲染

← Cesium 应用各类型地理数据 前端单页面应用实现服务端渲染→

最近更新
01
vim日常使用记录
04-02
02
滑动窗口最大值
04-02
03
有效的字母异位词
04-02
更多文章>
Theme by Vdoing | Copyright © 2021-2025 izhaong | github | 蜀ICP备2021031194号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式