# requirejs-tools-pc **Repository Path**: xiaoheFE/requirejs-tools-pc ## Basic Information - **Project Name**: requirejs-tools-pc - **Description**: 基于requirejs-PC端模块化解决方案 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-04-22 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于requirejs-PC端模块化解决方案 ## 主要技术栈 + jQuery : 不解释。 + require : AMD模块化工具,项目的主要构件。源文件目录src/js,生成目录dist/。 + Less : CSS预编译语言。源文件目录src/less,生成目录dist/css。 + Mock : 解决方案有2种: 1. 基于mock.js假数据的解决方案。用于模拟数据接口格式即假数据,文件位置src/js/mock。(用于接口不存在的情况) 2. 接口反向代理(用于接口存在的情况) + artTemplate : HTML模板引擎。源文件目录src/template,生成目录dist/。 ## 主要插件 + layer 页面弹窗 文档地址:http://layer.layui.com/ + select2 下拉框 文档地址:https://select2.org/configuration/ + cropper 图片裁剪 + echarts 数据图表 + SuperSlide 轮播图,选项卡等 + jquery-validate 表单验证 + ztree 树形菜单 + swiper 轮播图,滑动组件 + webuploader 文件上传 文档地址:http://fex.baidu.com/webuploader/document.html ## 命令 ``` npm install // 安装gulp及插件 + 建议安装cnpm,下载node包速度会快一些,下面是安装指令 // mac安装需要sudo权限 + npm install -g cnpm --registry=https://registry.npm.taobao.org npm run dev // 启动开发版本,不压缩,启用css map npm run pro // 启动生产版本,压缩图片和js,不启用css map,启动本地server npm run build // 启动生产版本,压缩图片和js,不启用css map,不启动本地sever npm run clean // 删除dist文件夹(需在gulp do之前执行) npm run sftp // 将 dist/** 上传至sftp ``` ## 基于gulp构建工具,详见package.json **注意:如要使用ES6/ES7/ES8,babel-preset-env可以转为ES5,IE8以下版本无法支持。** + babel-core : babel内核,用于支持babel-preset-env。 + babel-preset-env : babel-preset-es2015已经停用,唯一的babel插件。 + browser-sync : http环境。 + gulp-babel : babel基于gulp的插件,需要和babel-preset-env一同使用。 + gulp-changed : 只编译改变的文件。 + gulp-clean : 删除文件及文件夹。 + gulp-file-include : 使html有Include的功能。 + gulp-htmlmin : html代码压缩。 + gulp-if : 条件语句。 + gulp-imagemin : 图片压缩。 + gulp-less : less编译。 + less-plugin-autoprefix : css3补全前缀。 + gulp-plumber : 防止产生错误终止gulp。 + gulp-sequence : task同步队列。 + gulp-sftp : sftp上传。 + gulp-sourcemaps : css map。 + gulp-uglify : js压缩。 + gulp-strip-debug : 移除js压缩信息。 + gulp-watch : 检测。 + minimist : 处理node参数。 ## 基于Node.js ### 项目版本相关配置: 配置文件位置:**/src/projectConfig.json** - **version**包括前端版本控制(用于清除缓存便于测试) - **svnVersion**版本控制(生产环境真实版本-与version保持一致即可) - **title**项目名称(用于页面title和gulp提示) - **sftpProjectConfig**sftp相关配置 ``` { "version" : "1.0.0", "svnVersion" : "1.0.0", "title" : "爱校App生成器", "sftpProjectConfig" : { "host" : "192.168.1.10", "port" : "22", "user" : "xiaohe", "pass" : "Wfzf6&uoxGwzcpvA4+eRgiuMbH6oZv^P^C", "remotePath" : "/home/xiaohe/www/app/business.xiaohe.com.cn/bin/webroot/dist/" } } ``` ### 接口反向代理: 配置文件位置:**/src/mockRouteConfig.json** 用于实现反向代理,利于前后端分离,进行本地开发: 1. **path**为代理别名即ajax.url = "/api/vote" 2. **to**为被代理地址 3. http开头为跨域地址,/开头为本地地址。 ``` { "routes": [ { "path": "/api/vote", "to": "http://www.baonahao.com/Ajaxs/getCategoryNameAndCourseNum", "commons": "接口信息备注" }, { "path": "/api/getUserInfo", "to": "/mock/post1.json", "commons": "接口信息备注" } ] } ``` ## 目录结构
requirejs-tools-pc
│  .babelrc
│  .gitignore
│  deploy.sh
│  gulpfile.babel.js
│  package.json
│  README.md
│  tree.txt
│  
├─gulp
│      agent_module.js
│      clean_module.js
│      create_version.js
│      css_module.js
│      getProjectConfig.js
│      html_module.js
│      image_module.js
│      js_module.js
│      options_module.js
│      rev_module.js
│      server_module.js
│      sftp_module.js
│      toProxy.js
│      watch_module.js
│      
└─src
    │  index.html
    │  mockRouteConfig.json
    │  projectConfig.json
    │  README.md
    │  
    ├─agent
    │  │  agent_test.html
    │  │  Conf.php
    │  │  index.php
    │  │  RequestApi.php
    │  │  Sign.php
    │  │  VerificationCode.php
    │  │  
    │  └─tmp
    │          66411763d7484b502ad25cd16a3203b3.png
    │          
    ├─img
    │  │  loading_section.gif
    │  │  
    │  ├─default_img
    │  ├─form_ele
    │  │      line_date.png
    │  │      search.png
    │  │      tip_ok.png
    │  │      tip_wrong.jpg
    │  │      wrong_tip.png
    │  │      
    │  ├─icon
    │  │      icon_date.png
    │  │      
    │  ├─layer_tip_icon
    │  │      msg_icon_fail.png
    │  │      msg_icon_success.png
    │  │      
    │  ├─no_content
    │  │      guide_no_data.png
    │  │      no_contern_big.png
    │  │      
    │  ├─pagination
    │  │      first_page.png
    │  │      first_page_on.png
    │  │      last_page.png
    │  │      last_page_on.png
    │  │      next.png
    │  │      next_on.png
    │  │      prev.png
    │  │      prev_on.png
    │  │      
    │  └─radio_checkbox
    │          check_icon.png
    │          check_icon_on.png
    │          day_sel_no.png
    │          day_sel_ok.png
    │          modify_icon.png
    │          radio_icon.png
    │          radio_icon_disable.png
    │          radio_icon_on.png
    │          
    ├─include
    │  │  header-common.html
    │  │  
    │  └─layout
    │          nav.html
    │          subnav.html
    │          
    ├─js
    │  │  config.js
    │  │  init.js
    │  │  
    │  ├─config
    │  │      path.js
    │  │      
    │  ├─page-DemoShow
    │  ├─page-Index
    │  │      entry-index.js
    │  │      
    │  └─public
    │      ├─business
    │      │      backEndStatusCode.js
    │      │      cropperFz.js
    │      │      dataExport.js
    │      │      dataImport.js
    │      │      doubleClickEdit.js
    │      │      headAndFoot.js
    │      │      layerFz.js
    │      │      layerPc.js
    │      │      location.js
    │      │      pagination.js
    │      │      radioCheckbox.js
    │      │      selectConfig.js
    │      │      upload.js
    │      │      validateBefore.js
    │      │      validateFz.js
    │      │      webUploaderFz.js
    │      │      
    │      ├─service
    │      └─tools
    │              ajax.js
    │              arttemplateHelper.js
    │              method.js
    │              select2Fun.js
    │              
    ├─less
    │  │  normalize.less
    │  │  public.less
    │  │  
    │  ├─common
    │  ├─component
    │  │      button.less
    │  │      define_scrollbar.less
    │  │      disable_style.less
    │  │      form_check.less
    │  │      laydate.less
    │  │      layer_defined.less
    │  │      no_content.less
    │  │      pagination.less
    │  │      position.less
    │  │      radio_check.less
    │  │      show-hide.less
    │  │      table.less
    │  │      tree.less
    │  │      
    │  ├─Ku
    │  │      common.less
    │  │      css2.less
    │  │      css3.less
    │  │      
    │  ├─layout
    │  │      layout.less
    │  │      nav.less
    │  │      subnav.less
    │  │      
    │  ├─page-DemoShow
    │  │      entry-search.less
    │  │      
    │  ├─page-Index
    │  │      entry-index.less
    │  │      
    │  └─variable
    │          variable.less
    │          
    ├─lib
    │  ├─css
    │  │      animate.min.css
    │  │      bootstrap.min.css
    │  │      city-picker.css
    │  │      cropper.min.css
    │  │      jquery.mCustomScrollbar.css
    │  │      swiper-3.4.2.min.css
    │  │      webuploader.css
    │  │      
    │  ├─js
    │  │  │  bootstrap.min.js
    │  │  │  city-picker.data.js
    │  │  │  city-picker.data.min.js
    │  │  │  city-picker.js
    │  │  │  city-picker.min.js
    │  │  │  cropper.js
    │  │  │  css.min.js
    │  │  │  csv.min.js
    │  │  │  decimal.js
    │  │  │  echarts.min.js
    │  │  │  jquery-1.12.4.min.js
    │  │  │  jquery-3.1.1.slim.min.js
    │  │  │  jquery.animateNumber.min.js
    │  │  │  jquery.color.js
    │  │  │  jquery.SuperSlide-2.1.1.min.js
    │  │  │  jquery.validate.min.js
    │  │  │  jquery.ztree.core.min.js
    │  │  │  jquery.ztree.excheck.min.js
    │  │  │  layer.js
    │  │  │  mock-min.js
    │  │  │  require.js
    │  │  │  swiper-3.4.2.jquery.min.js
    │  │  │  swiper.animate1.0.2.min.js
    │  │  │  template-web.js
    │  │  │  text.js
    │  │  │  webuploader.js
    │  │  │  
    │  │  ├─jquery.mCustomScrollbar
    │  │  │      jquery.mCustomScrollbar.js
    │  │  │      jquery.mousewheel.min.js
    │  │  │      
    │  │  ├─laydate
    │  │  │  │  laydate.js
    │  │  │  │  
    │  │  │  └─theme
    │  │  │      └─default
    │  │  │          │  laydate.css
    │  │  │          │  
    │  │  │          └─font
    │  │  │                  iconfont.eot
    │  │  │                  iconfont.svg
    │  │  │                  iconfont.ttf
    │  │  │                  iconfont.woff
    │  │  │                  
    │  │  └─select2
    │  │          language-zh_CN.js
    │  │          select2.css
    │  │          select2.min.js
    │  │          
    │  └─skin
    │      ├─default
    │      │      icon-ext.png
    │      │      icon.png
    │      │      layer.css
    │      │      loading-0.gif
    │      │      loading-1.gif
    │      │      loading-2.gif
    │      │      
    │      ├─jigou
    │      │      layer.css
    │      │      layerIcon1.png
    │      │      layerIcon2.png
    │      │      layerIcon3.png
    │      │      layerIcon4.png
    │      │      
    │      └─jwb
    │              icon_failed.png
    │              icon_ok.png
    │              icon_warn.png
    │              shut_icon.png
    │              style.css
    │              
    ├─mock
    │  ├─DemoShow
    │  └─LogicEntry
    │          getMember.js
    │          
    ├─template
    │  │  cascade-select-template.html
    │  │  select-config.html
    │  │  select-template.html
    │  │  upload-tpl.html
    │  │  uploadApp-tpl.html
    │  │  
    │  ├─dataImport
    │  │      import-error.html
    │  │      
    │  └─no-content
    └─view
        │  index.html
        │  
        └─DemoShow
                search.html
## 代理接口调用(php接口代理层,用于解决跨域问题) 1. 示例地址:https://doc.oschina.net/jigou-web2.0 2. 密码:xiaohe.com ## 接口文档 文档地址:xxx ## css3兼容性速查 http://caniuse.com/#search=%3A%3Aafter