项目作者: PDKSophia

项目描述 :
?JavaScript设计模式的学习,同时会自己封装一些如adapter request classes、time classes 等
高级语言: JavaScript
项目地址: git://github.com/PDKSophia/DesignPatternsToJS.git
创建时间: 2019-09-30T03:42:52Z
项目社区:https://github.com/PDKSophia/DesignPatternsToJS

开源协议:

下载


DesignPatternsToJS



介绍

JavaScript 设计模式的学习,会跟着《JavaScript 设计模式》这本书进行一些 demo 的记录,当然除了设计模式,还会记录自己封装的一些小玩意。

客官,点个赞?

如果觉得对您有帮助的话,点个 ⭐star 再走?

🥇 博文


🏓 组件设计

Button Component

主要功能

  • 借鉴 Ant Design,低成本了解一个公共组件的设计 ✅
  • 支持普通按钮、文本按钮、图标按钮、组合按钮、反白按钮 ✅

文档


🎯 请求封装

Adapter Request

主要功能

  • 通过 axios 进行封装的统一请求文件 ✅
  • url进行判断处理,✅
  • 进行了 http code 的状态处理 ✅
  • 进行了后端返回的数据状态码处理 ✅

使用

👉 了解更多,请点击这里 Adapter Request Classses

  1. import React from 'react';
  2. import adapter from './adapter';
  3. export class requestComponent extends React.PureComponent {
  4. componentWillMount() {
  5. // 发送请求
  6. adapter
  7. .requestCallAPI({
  8. url: '/erek-vue-manage/user/retriveList',
  9. headers: { 'X-Requested-With': 'XMLHttpRequest' }
  10. })
  11. .then(res => {
  12. console.log(res);
  13. })
  14. .catch(err => {
  15. console.log(err);
  16. });
  17. }
  18. }

🏏 工具封装

Download

主要功能

  • 下载资源文件 ✅
  • 支持图片/音频/视频/PDF/DOC 等类型 ✅
  • 兼容 IE、Edge、Chrome、FireFox、360 浏览器 ✅

使用

  1. import { retrieveFileType, downloadFile } from 'utils/Download';
  2. // 下载资源
  3. downloadClick = () => {
  4. for (let i = 0; i <= resourceList.length - 1; i++) {
  5. downloadFile({
  6. ...resourceList[i],
  7. // 如果本身无fileType,需要加入自定义默认的类型
  8. fileType: retrieveFileType(resourceList[i].resourceType)
  9. });
  10. }
  11. };

Browser

主要功能

  • 获取主流浏览器名称
  • 包含主流浏览器
    • Chrome 浏览器 ✅
    • FireFox 浏览器 ✅
    • Safari 浏览器 ✅
    • Edge 浏览器 ✅
    • IE 浏览器(5~11)✅
    • QQ 浏览器 ✅
    • UC 浏览器 ✅
    • Opera 浏览器 ✅
    • Sougou 浏览器 ✅
    • Baidu 浏览器 ✅
    • 遨游浏览器 ✅
    • 猎豹浏览器 ✅
    • 夸克浏览器 ✅
    • 世界之窗浏览器 ✅
    • 360 浏览器 ✅

使用

  1. import { getBrowserVersionName } from 'utils/Browser';
  2. const browser_name = getBrowserVersionName();

FullScreen 全屏

使用

  1. import { fullScreen, cancelFullScreen, isFullScreen } from '@common/fullscreen';
  2. function TuPu() {
  3. const domRef = useRef(null);
  4. function openFullScreen() {
  5. fullScreen(domRef.current); // 浏览器进入全屏
  6. }
  7. function closeFullScreen() {
  8. cancelFullScreen(); // 退出浏览器全屏
  9. }
  10. // 这才是重点 ❗❗❗
  11. // fullscreenchange 一定会被触发,监听这个,盘它!
  12. useEffect(() => {
  13. function exitHandler() {
  14. if (!isFullScreen()) {
  15. // 当前处于全屏下
  16. cancelFullScreen();
  17. }
  18. }
  19. document.addEventListener('webkitfullscreenchange', exitHandler, false);
  20. document.addEventListener('mozfullscreenchange', exitHandler, false);
  21. document.addEventListener('fullscreenchange', exitHandler, false);
  22. document.addEventListener('MSFullscreenChange', exitHandler, false);
  23. return () => {
  24. document.removeEventListener('webkitfullscreenchange', exitHandler, false);
  25. document.removeEventListener('mozfullscreenchange', exitHandler, false);
  26. document.removeEventListener('fullscreenchange', exitHandler, false);
  27. document.removeEventListener('MSFullscreenChange', exitHandler, false);
  28. };
  29. });
  30. return (
  31. <div ref={domRef}>
  32. <EchartsCanvas ></EchartsCanvas>
  33. </div>
  34. );
  35. }

💈 设计模式 Demo


Others

Copyright © 2019 - 2020 by PDK

If you have any questions, please contact me 1063137960@qq.com