美文网首页
别让浏览器限制了你的才华

别让浏览器限制了你的才华

作者: 小遁哥 | 来源:发表于2022-06-27 20:47 被阅读0次

众所周知,浏览器是有很多限制的。

比如这张图里的功能,获取当前电脑的磁盘信息

v2-b8215da143a6a5d116462ce4a3cc816b_1440w.jpg

再比如说这张图里的功能,请求第三方接口渲染Swagger文档

v2-10af1e0df93e3e913fde3e21b74581b7_1440w.jpg

再再比如说这张图里的功能,将开发中常用的Git操作封装起来一键执行

v2-087fc7a23367d4e7927e1d6797d6c515_1440w.jpg

还有一点就是浏览器的提供的存储只能存在浏览器里,这也是为什么需要后端的一个原因

no,no,no,你并不需要专门花时间去学一种后台语言,node.js离前端是很近的,上述功能本质上也是出于工程化目的,解决日常开发中代码层次不能解决的问题

node.js就是最合适的,node.js就是最合适的,node.js就是最合适的。

我话讲完,谁赞成,谁反对

看一下获取电脑磁盘信息的这个过程

前端发送请求 http://10.198.1.183:8000/api/system/getFileDirectory,"http://10.198.1.183:8000" 便是基于node.js写的后台服务地址,没有找到则会自动创建,结构如下

v2-014fef4d1718f5a6012c469ef273efae_1440w.jpg

自动填充内容如下

(function () {
  return function (argData, argParams,external) {
    return {
      isWrite: false,
      //data:argData,
      response: {
        code: 200,
        data: {},
      },
    };
  };
})();

其中system.json是用来存储数据的,argData就是读取system.json解析后的结果,操作argData配合指定的返回格式就可以实现增删改查

argParams是解析ajax传来数据的结果,external用于多个脚本文件公用代码

getFileDirectory.js文件代码如下

(function () {
  const fs = require("fs");
  const path = require("path");
  const execSync = require("child_process").execSync;
  return function (argData, argParams) {
    if (argParams.path) {
      const readDir = fs.readdirSync(argParams.path);
      const list = [];
      readDir.forEach((item) => {
        const itemPath = path.join(argParams.path, item);
        const pointPos = item.lastIndexOf(".");
        let stuffix = "";
        if (pointPos !== -1 && pointPos !== 0) {
          stuffix = item.substring(pointPos + 1);
        }
        try {
          const stat = fs.lstatSync(itemPath);
          list.push({
            name: item,
            path: itemPath,
            stuffix,
            isLeaf: !stat.isDirectory(),
          });
        } catch (error) {
          console.log(`${item}操作出错`);
        }
      });
      return {
        response: {
          code: 200,
          data: {
            success: true,
            list,
          },
        },
      };
    } else {
      const stdout = execSync("wmic logicaldisk get caption").toString();
      const diskList = stdout
        .split("Caption")[1]
        .trim()
        .split("\n")
        .map((item, index) => {
          const name = item.trim();
          return {
            name,
            path: name + "\\",
            isLeaf: false,
            isDisk: true,
          };
        });
      return {
        response: {
          code: 200,
          data: {
            success: true,
            list: diskList,
          },
        },
      };
    }
  };
})();

response 部分是返回ajax的数据,code是http状态码,默认同步,支持异步

上述流程已被封装为npm包 sf-innne-service,github地址: https://github.com/xiaodun/sf-inner-service

同时贴心的编写了教程,每个案例都可以单独运行,相信它会对以下人群起到帮助的作用

  • 已经接触前端,但对 ajax 请求,前后端协作,完善的开发流程没有深刻概念

  • 具备一定的前端知识,想通过做项目练习而提升自己,苦于缺乏后端能力

  • 熟悉前端,深感封装的局限性,想通过工程化提升开发效率

  • 想开发一些满足自己交互体验的离线产品,受浏览器器限制,一些功能做不了

基础功能介绍

1.能用来做什么

2.实现增删改查

3.在webpack中使用

4.实现上传下载

8.websocket 练习

应用案例

5.调用第三方接口

6.返回网上图片的base64码

7.指定文件在vscode中打开

扩展示例

9.对接口做拦截

10.实现视频的边下边播

如果仍对这东西能做什么抱有怀疑,不防看看这两个仓库,sf-notessf-mobile-web

相关文章

  • 别让浏览器限制了你的才华

    众所周知,浏览器是有很多限制的。 比如这张图里的功能,获取当前电脑的磁盘信息 再比如说这张图里的功能,请求第三方接...

  • 别让百分之一的情绪失控,毁掉百分之九九的努力

    人生短暂别让情绪毁掉了你的一生,别让格局限制了你的命运,别让命运决定了你的一生。别让眼界限制了你的格局,人总是...

  • 2017-12-11

    别让床限制了你的行动

  • 黑勇:别让贫穷限制了你的想象力链接

    链接:别让贫穷限制了你的想象力“ 别让贫穷限制了你的想象力”这句话在去年红极一时。在这个超现实的世界里,我们的思维...

  • 别让圈子限制了你

    之前有篇文章写过,最新最好的东西只会在小圈子里传播。 你在什么圈子,这个圈子的高度就是你认知力所能达到的高度。 你...

  • 别让贫穷限制了你

    L是我的好友, 昨天和L去吃晚饭,我们总习惯在路上讨论着我们过去、现在、将来。 我们即将迎来高中毕业,心里既...

  • 别让斜杠,限制了你

    前两天,在微博上看到这么一段话:所谓斜杠,应当是百尺竿头更进一步的飞跃,而非焦头烂额慌乱之下的逃窜。我们都希望自己...

  • 别让思维限制了你

    今天看到一个采访孩子的视频,视频中一个孩子解释了这样一件事。 “你觉得在穷、矮、丑这三样,哪一样发生在你身上比较可...

  • 别让定位限制了你!

    你,从小到大,是不是都被教育,是不是很多人也都这样告诉你:“要知道自己是哪块料,要学会定位自己。”? 他们所谓的定...

  • 今日文案

    别让犹豫限制了脚步 别让忧伤苍白了心灵 应当自信优雅,为自己鼓掌

网友评论

      本文标题:别让浏览器限制了你的才华

      本文链接:https://www.haomeiwen.com/subject/ppeovrtx.html