首页
更多应用
Search
1
修改iview的标签为i-的形式而不是驼峰的形式
2,791 阅读
2
PHP微信和企业微信签名
2,522 阅读
3
在VUE中怎么全局引入sass文件
2,223 阅读
4
vscode硬件占用较高解决方案
2,017 阅读
5
解决Macos下storm系列IDE卡顿的问题
1,975 阅读
默认分类
JS
VUE
CSS
mac使用技巧
React
fastmock
登录
/
注册
Search
标签搜索
react
js
vue
vscode
nodejs
项目
代码
webpack
工具
nginx
小程序
css
fastmock
eslint
npm
http
vue-cli3
git
浏览器
const
fastmock技术社区
累计撰写
102
篇文章
累计收到
26
条评论
首页
栏目
默认分类
JS
VUE
CSS
mac使用技巧
React
fastmock
页面
更多应用
搜索到
102
篇与
的结果
2018-04-19
PHP微信和企业微信签名
签名算法签名生成规则如下:参与签名的参数有四个: noncestr(随机字符串), jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分)将这些参数使用URL键值对的格式 (即 key1=value1&key2=value2…)拼接成字符串string1。有两个注意点:1. 字段值采用原始值,不要进行URL转义;2. 必须严格按照如下格式拼接,不可变动字段顺序。(以上内容摘自企业微信开发文档)具体实现代码如下:index.php<? // 设置跨域请求头 header("Access-Control-Allow-Origin: *"); header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With'); include_once('Http.php'); // 如果存在缓存文件,用缓存文件中的信息初始化签名数据 $cacheData = array(); if (file_exists('cache.php')) { $cacheData = include_once('cache.php'); // 判断缓存信息是否过期,如果过期删除缓存文件,并将data重置 if (time() - $cacheData['timestamp']/1 >= 7200) { unlink('cache.php'); $cacheData = array(); } } // 企业号信息 $corpId = 'XXXXXXXXXXXXXXXXXX'; $agentId = 'XXXXXXX'; $secret = 'XXXXXXXXXXXXXXXXXXXXX'; $getTokenUrl = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid='.$corpId.'&corpsecret='.$secret; $getTicketUrl = 'https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token='; // 生成nonce_str的方法--参数:生成的长度 function randomkeys($length) { $returnStr=''; $pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; for($i = 0; $i < $length; $i ++) { $returnStr .= $pattern {mt_rand ( 0, 61 )}; } return $returnStr; } // 如果缓存文件中已经存在token if (isset($cacheData['access_token'])) { $token = $cacheData['access_token']; $onceStr = $cacheData['nonce_str']; $timeStamp = $cacheData['timestamp']; } else { $onceStr = randomkeys(16); $timeStamp = time(); // 请求微信接口获取access_token $data = json_decode(send_post($getTokenUrl, array()), true); $token = $data['access_token']; } $getTicketUrl = $getTicketUrl.$token; // 如果缓存文件中已经存在ticket $ticket = ''; if (isset($cacheData['access_token'])) { $ticket = $cacheData['jsapi_ticket']; } else { // 请求微信接口获取ticket $jsTicketRes = json_decode(send_post($getTicketUrl, array()), true); if ($jsTicketRes['errcode'] == 0) { $ticket = $jsTicketRes['ticket']; } } // 缓存ticket和accessToken的配置信息 $cacheData = array( 'jsapi_ticket' => $ticket, 'access_token' => $token, 'nonce_str' => $onceStr, 'timestamp' => $timeStamp ); // 签名的参数信息--参数的key值必须要按照ASCII码排序 $cacheParams = 'jsapi_ticket='.$ticket.'&noncestr='.$onceStr.'×tamp='.$timeStamp.'&url='.urldecode($_POST['signUrl']); // 生成签名的函数--php自带shal算法函数,直接调用即可 function makeSignature($args){ return sha1($args); } // 如果不存在缓存文件,则缓存, 否则不缓存 if (!file_exists('cache.php')) { $path = 'cache.php'; $str = '<?php return '; $str .= var_export($cacheData,true);//数组转字符串 $str .= ';'; file_put_contents($path,$str); } // 生成签名 $signature = makeSignature($cacheParams, $onceStr); // 返回签名信息 echo json_encode(array( 'signature' => $signature, 'timestamp' => $timeStamp, 'onceStr' => $onceStr )); ?> Http.php (http请求工具函数)<? /** * 发送post请求 * @param string $url 请求地址 * @param array $post_data post键值对数据 * @return string */ function send_post($url, $post_data, $type = 'GET') { $postdata = http_build_query($post_data); $options = array( 'http' => array( 'method' => $type, 'header' => 'Content-type:text/json', 'content' => $postdata, 'timeout' => 15 * 60 // 超时时间(单位:s) ) ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); return $result; } ?> cache.php(生成的access_token和ticket缓存文件)<?php return array ( 'jsapi_ticket' => 'HoagFKDcsGMVCIY2vOjf9i-5XABPegggM0ZkCdJVgMv_WFPkNNg94gBf3pfJ4E8ohxc4b5eXSYEjuq41TYtclA', 'access_token' => 'Kzz-XRg8MEdT3-CbQWcp4f_1VOIFhM-dpvGWUDHuIIYXRhnjF5Pa4F8apWZ7oBjgzS2kruL6LZjayiIx3yS1cr0oUlI1PqiFF9UZ9SlZLwem9JzHlWD02eqAWOTYlEd3JZk0o39D3TuKcn_XHBd4jFl9TCuVEqwe7KtHRheil61LXewtDwClaLznhWykJNYJbaSfpy0-pRmnTb6iwwHoyA', 'nonce_str' => 'CTjKeEp5nwskvgqn', 'timestamp' => 1524100235, );
2018年04月19日
2,522 阅读
4 评论
0 点赞
2018-04-13
Mac电脑通过远程桌面访问windows电脑的方法
首先到微软下载远程桌面连接工具,地址如下:https://www.microsoft.com/zh-cn/download/details.aspx?id=21296下载后安装到自己的mac电脑。安装好后在程序坞中的快捷图标如下点击打开,会显示输入远程地址的界面,输入后点击连接会到输入用户名密码的界面,如果远程电脑或者windows服务器已经配置了相应的策略,那么就能直接连接到远程桌面了。如果没有,则会提示如果出现了上面的错误提示,首先检查自己的mac电脑有没有未我们的远程桌面连接软件配置权限,到设置中,找到安全性与隐私-》防火墙-》左下角解锁设置-》防火墙选项-》将远程桌面连接软件添加到配置中并且允许。如果上面的配置好了但是还是出现证书错误的提示。那问题就在远程电脑那边了。需要为windows电脑配置相应的远程控制策略。具体操作如下:1)进入到远程电脑使用快捷键win+R打开运行指令工具2)在文本框中输入指令gpedit.msc并回车进入本地策略编辑器窗口。3)依次找到 计算机配置》管理模板》windows组件》远程桌面服务》远程桌面会话主机》安全》远程(RDP)连接要求使用指定的安全层。然后双击打开,在弹出的窗口中做下图中的配置配置好后点击应用即可。配置好了上面两项,回到我们的mac电脑,就能链接到远程windows电脑桌面了
2018年04月13日
918 阅读
0 评论
0 点赞
2018-03-23
在Mac更新node版本
1、查看当前的node版本node -v2、清除npm当前缓存信息sudo npm cache clean -f3、执行下载nodesudo npm install -g n4、下载成功后执行安装sudo n stable5、最后查看更新之后的版本node -v
2018年03月23日
830 阅读
0 评论
0 点赞
2018-01-10
在VUE中怎么全局引入sass文件
在使用vue开发SPA应用中,我们经常需要在一个或多个scss文件中定义公共变量或者mixin亦或是很多通用的function,而且不希望在每个vue文件中都去@import,针对这种情况,可以使用下面的方法添加全局引入的sass文件,使这些样式或者方法可以被打包到全局的样式文件中。添加依赖npm install sass-resources-loader --save-dev修改build/utils.js'use strict' const path = require('path') const config = require('../config') const ExtractTextPlugin = require('extract-text-webpack-plugin') exports.assetsPath = function (_path) { const assetsSubDirectory = process.env.NODE_ENV === 'production' ? config.build.assetsSubDirectory : config.dev.assetsSubDirectory return path.posix.join(assetsSubDirectory, _path) } exports.cssLoaders = function (options) { options = options || {} const cssLoader = { loader: 'css-loader', options: { minimize: process.env.NODE_ENV === 'production', sourceMap: options.sourceMap } } // generate loader string to be used with extract text plugin function generateLoaders (loader, loaderOptions) { const loaders = [cssLoader] if (loader) { loaders.push({ loader: loader + '-loader', options: Object.assign({}, loaderOptions, { sourceMap: options.sourceMap }) }) } // Extract CSS when that option is specified // (which is the case during production build) if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, fallback: 'vue-style-loader' }) } else { return ['vue-style-loader'].concat(loaders) } } // 引入sass全局变量,mixin,function等 function resolveResouce(name) { return path.resolve(__dirname, '../src/assets/style/' + name); } function generateSassResourceLoader() { var loaders = [ cssLoader, // 'postcss-loader', 'sass-loader', { loader: 'sass-resources-loader', options: { // it need a absolute path resources: [ resolveResouce('reset.scss'), resolveResouce('var.scss'), resolveResouce('common.scss') ] } } ]; if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, fallback: 'vue-style-loader' }) } else { return ['vue-style-loader'].concat(loaders) } } // https://vue-loader.vuejs.org/en/configurations/extract-css.html // return部分加入上面的loader return { css: generateLoaders(), postcss: generateLoaders(), less: generateLoaders('less'), sass: generateSassResourceLoader(), scss: generateSassResourceLoader(), stylus: generateLoaders('stylus'), styl: generateLoaders('stylus') } } // Generate loaders for standalone style files (outside of .vue) exports.styleLoaders = function (options) { const output = [] const loaders = exports.cssLoaders(options) for (const extension in loaders) { const loader = loaders[extension] output.push({ test: new RegExp('\\.' + extension + '$'), use: loader }) } return output }
2018年01月10日
2,223 阅读
5 评论
0 点赞
2018-01-10
在vue项目中使用jquery和jquery插件
在vue项目中使用jquery和jquery插件Vue之所以受欢迎,主要就在于它的轻量和灵活,我们可以用vue做SPA,也可以用它做多页应用,一个页面对应一个VUE实例。而且因为他的轻量,低侵入性,所以我们可以很方便地和其他框架或者库搭配使用,那么我们怎么在基于vue的SPA应用中搭配jquery使用呢?PS:一般我们是不建议直接用jquery操作DOM节点的,因为这有悖于VUE的核心思想(模型视图双向绑定),但是,某些情况下我们为了实现当前VUE社区没实现的,以前jquery实现了的炫酷的效果的时候,也不妨采用jquery和jquery插件来实现引入jquery引入jquery很简单,只需一下两步:使用npm安装jquery依赖,或者把jquery下载到我们的本地修改项目目录build下的webpack.base.conf.js配置文件// 在开头引入webpack,后面的plugins那里需要 var webpack = require('webpack') // resolve module.exports = { // 其他代码... resolve: { extensions: ['', '.js', '.vue'], fallback: [path.join(__dirname, '../node_modules')], alias: { 'src': path.resolve(__dirname, '../src'), '@': resolve('src'), // webpack 使用 jQuery,如果是自行下载的 // 'jquery': path.resolve(__dirname, '../src/assets/libs/jquery/jquery.min'), // 如果使用NPM安装的jQuery 'jquery': 'jquery' } }, // 增加一个plugins plugins: [ new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery" }) ], // 其他代码... }上面的代码中,alias配置项等同于seajs中的alias配置,给一个路径起一个别名。比如说配置中的 @ 符号就指向到了我们的src目录,以后在requre或者import时就可以通过这个别名指向我们需要访问的目录或者文件了。plugins配置项简单理解就是把下面的资源作为插件的形式导入到项目中,导入后我们就可以通过$或者jQuery访问到jquery库了。引入jquery 插件通过上面的配置,jquery就整合到我们的项目中了,不管在什么位置都可以直接使用了,如果要使用jquery的插件,只需要在我们要使用的组件中加载对应的插件资源就可以了(当然,要加载的资源必须是es6或者AMD,CMD模块),比如,我们经常使用的toastr提示插件// 使用toastr <script> import 'assets/libs/toastr/toastr.min.css'; import toastr from 'assets/libs/toastr/toastr.min'; export default { data() { return {} }, mounted() { toastr.success('Hello World'); } } </script>
2018年01月10日
1,640 阅读
0 评论
0 点赞
2017-12-26
解决Macos下storm系列IDE卡顿的问题
最近在使用phpstorm开发项目的时候,只要加载JavaScript文件,不管有多大,如果项目文件数据比较多的话,都能够让phpstorm卡到死机。其中调整过内存设置,关闭过动态提示,使用过phpstorm的安全模式,都不能解决卡的问题。中间也试过放弃phpstorm,改用其他IDE开发。但都没有phpstorm那么好用。没办法,在国内的百度无法找到解决方案,只能出去找了。最终在一个国外论坛里,看到不一样的回答。只要修改两个Java虚拟机参数,就彻底解决了卡的问题了。操作步骤如下:找到phpstorm.vmoptions文件,macos环境下,找到phpstorm/webstorm文件,右键选择“显示包内容”,打开Contents->bin ->phpstorm.vmoptions/webstorm.vmoptions使用记事本打开。添加以下两行代码:// orm/phpstorm启用硬件加速 -Dawt.usesystemAAFontSettings=lcd -Dawt.java2d.opengl=true思考:phpstorm是使用JAVA开发的。由于IDE提供源文件关键字渲染功能,我们对文件的任何编辑或移动鼠标,都会触发渲染操作。而phpstorm默认的JAVA环境并没有利用机器的硬件加速技术去实现实时渲染,因此当然会让系统卡死。而只要在JAVA环境中让系统默认使用硬件加速,就可以解决占用系统资源过大,让phpstorm卡的问题了。注:此文章转自 http://blog.csdn.net/orrinzeng/article/details/51335815
2017年12月26日
1,975 阅读
3 评论
0 点赞
2017-12-20
让gulp-webserver自动化开发服务器支持SSI语法 (include等)
var webserver = require('gulp-webserver'); var connectSSI = require('connect-ssi'); gulp.task('webserver', function() { gulp.src('./') .pipe(webserver({ fallback: './views/error.html', livereload: true, directoryListing: true, port:8000, open: true, middleware: [ connectSSI({ ext: '.shtml', // file extension. Only urls ending in this will be evaluated. baseDir: __dirname // base path to look in for files }) ] })); });在gulpfile.js中加入上面的配置代码(核心是middleware那里的connectSSI配置),我们就可以使用.shtml文件格式的html了,从而在代码中可以使用ssi的语法实现一些本来需要后端支持的功能,如:include提取公共部分,避免前端coder们头疼的大量复制粘贴工作
2017年12月20日
1,215 阅读
0 评论
0 点赞
2017-12-20
修改iview的标签为i-的形式而不是驼峰的形式
前言iview组件库中,通过Vue.use注册了iview到项目中后,在组件内调用iview组件时默认都是通过CamelCase的方式引用iview组件的,HTML本身是大小写不敏感的,vue官网也推荐在template中使用kebab-case标签,iview官网也提供了修改的方法,具体操作如下:首先通过 npm 安装 iview-loadernpm install iview-loader --save-dev配置 webpack(build目录下的webpack.base.conf.js文件),改写平时 vue-loader 的配置,形如:module: { rules: [ { test: /\.vue$/, use: [ { loader: 'vue-loader', options: { } }, { loader: 'iview-loader', options: { prefix: false } } ] } ] }参数 prefix 设置为 true 后,所有 iView 组件标签名都可以使用前缀 i-,例如 、完整的标签名如下:{ 'i-affix': 'Affix', 'i-alert': 'Alert', 'i-auto-complete': 'AutoComplete', 'i-avatar': 'Avatar', 'i-back-top': 'BackTop', 'i-badge': 'Badge', 'i-breadcrumb': 'Breadcrumb', 'i-breadcrumb-item': 'BreadcrumbItem', 'i-button': 'Button', 'i-button-group': 'ButtonGroup', 'i-card': 'Card', 'i-carousel': 'Carousel', 'i-carousel-item': 'CarouselItem', 'i-cascader': 'Cascader', 'i-checkbox': 'Checkbox', 'i-checkbox-group': 'CheckboxGroup', 'i-circle': 'i-circle', 'i-col': 'Col', 'i-collapse': 'Collapse', 'i-color-picker': 'ColorPicker', 'i-date-picker': 'DatePicker', 'i-dropdown': 'Dropdown', 'i-dropdown-item': 'DropdownItem', 'i-dropdown-menu': 'DropdownMenu', 'i-form': 'Form', 'i-form-item': 'FormItem', 'i-icon': 'Icon', 'i-input': 'Input', 'i-input-number': 'InputNumber', 'i-menu': 'Menu', 'i-menu-group': 'MenuGroup', 'i-menu-item': 'MenuItem', 'i-submenu': 'Submenu', 'i-modal': 'Modal', 'i-option': 'Option', 'i-option-group': 'OptionGroup', 'i-page': 'Page', 'i-panel': 'Panel', 'i-poptip': 'Poptip', 'i-progress': 'Progress', 'i-radio': 'Radio', 'i-radio-group': 'RadioGroup', 'i-rate': 'Rate', 'i-row': 'Row', 'i-select': 'Select', 'i-slider': 'Slider', 'i-spin': 'Spin', 'i-step': 'Step', 'i-steps': 'Steps', 'i-switch': 'i-switch', 'i-table': 'Table', 'i-tabs': 'Tabs', 'i-tab-pane': 'TabPane', 'i-tag': 'Tag', 'i-timeline': 'Timeline', 'i-timeline-item': 'TimelineItem', 'i-time-picker': 'TimePicker', 'i-tooltip': 'Tooltip', 'i-transfer': 'Transfer', 'i-tree': 'Tree', 'i-upload': 'Upload' }
2017年12月20日
2,791 阅读
3 评论
0 点赞
2017-11-08
Apache httpd.conf 配置文件语法验证
Apache 的 httpd.conf文件修改之后,必须重启服务器才能生效。有时服务器在提供服务的时候,直接更改配置,重启服务,会带来很大的危险性。比如下面这样的错误日志11:22:48 [Apache] Error: Apache shutdown unexpectedly. 11:22:48 [Apache] This may be due to a blocked port, missing dependencies, 11:22:48 [Apache] improper privileges, a crash, or a shutdown by another method. 11:22:48 [Apache] Press the Logs button to view error logs and check 11:22:48 [Apache] the Windows Event Viewer for more clues 11:22:48 [Apache] If you need more help, copy and post this 11:22:48 [Apache] entire log window on the forums咋一看 以为是端口被占用,遇到这样的问题,我们先查看端口占用情况1,开始—->运行—->cmd,或者是window+R组合键,调出命令窗口,2,输入命令:netstat -ano,列出所有端口的情况。在列表中我们观察“本地地址”那一列被占用的端口如果通过以上方法发现我们的端口没有被占用,那多半是我们的Apache配置文件出错了,那么我们需要一种方法,可以检测我们的Apache配置文件有没有语法错误。如果能在修改配置之后,先验证语法正确与否,再重启服务器,则能避免一些不必要的错误。对以上需求,Apache本身提供了相应的命令来验证配置文件的语法。Windows环境的命令:httpd -t (注:如果您的电脑没有未Apache配置环境变量,需要进入到Apache目录的bin目录下执行该命令)Linux环境的命令:[root@server bin]# ./apachectl configtest如果正确无误,会显示Syntax OK信息Syntax OK如果存在错误,则会显示出错的行号以及错误信息,如下:AH00526: Syntax error on line 639 of D:/xampp/apache/conf/httpd.conf: <Directory> directive missing closing '>' AH00526: Syntax error on line 639 of D:/xampp/apache/conf/httpd.conf: <Directory> directive missing closing '>'
2017年11月08日
1,273 阅读
0 评论
0 点赞
2017-11-08
typecho 让注册的人直接可以发文章
让注册的人成为贡献者组修改文件 \var\Widget\Register.php 第 68 行:$dataStruct = array( 'name' => $this->request->name, 'mail' => $this->request->mail, 'screenName'=> $this->request->name, 'password' => $hasher->HashPassword($generatedPassword), 'created' => $this->options->gmtTime, 'group' => 'subscriber' );这个数组里面有个'group'应该就是了,将'subscriber'改成'contributor'就行了。让 “贡献者” 发帖直接通过无需审核方法参考:http://forum.typecho.org/viewtopic.php?f=4&t=7771修改 var/Widget/Contents/Post/Edit.php 的第 222 和 299 行(开发板在 223 和 230 行)将“editor”为“contributor”或者修改$contents['status'] = 'publish'; // 'waiting';把waiting改成publish即可。
2017年11月08日
1,333 阅读
0 评论
0 点赞
1
...
9
10
11