Skip to content

Instantly share code, notes, and snippets.

View SoarLin's full-sized avatar
🐢
take it easy

soar_lin SoarLin

🐢
take it easy
View GitHub Profile
@SoarLin
SoarLin / debounce.js
Last active November 5, 2022 07:00
throttle and debounce sample and test code
// 適用場景:偵測 input 做搜尋或自動完成
// inputEl.addEventListener('keyup', debounce(func, 500));
function debounce(func, delay = 200) {
let timer = null;
return (...args) => {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, args);
}, delay);
function inherit(Child, Parent) {
// 繼承原型上的屬性
Child.prototype = Object.create(Parent.prototype);
// 修復 constructor
Child.prototype.constructor = Child;
// 儲存超類別
Child.super = Parent;
@SoarLin
SoarLin / Promise-other-methods.js
Last active July 29, 2022 14:11
Implement Promise
MyPromise.prototype.catch = function(catchFunc) {
return this.then(null, catchFunc)
}
MyPromise.resolve = function(value) {
return new MyPromise((resolve, reject) => {
resolve(value);
})
}
MyPromise.reject = function(value) {
return new MyPromise((resolve, reject) => {
@SoarLin
SoarLin / lambda-get-ip.js
Created September 2, 2018 08:01
AWS Lambda Function to Get Internet IP
const http = require('http');
exports.handler = function(event, context, callback) {
const option = {
"hostname": "api.ipify.org",
"path": "/?format=JSON",
"method": "GET"
};
callback(null, Request(option).
@SoarLin
SoarLin / Makefile
Created September 2, 2018 07:50
aws-lambda-image_makefile
lambda:
npm install .
@echo "Factory package files..."
. . . . . . .
@echo "Create package archive..."
@cd build && zip -rq aws-lambda-image.zip .
@mv build/aws-lambda-image.zip ./
uploadlambda: lambda
@if [ -z "${LAMBDA_FUNCTION_NAME}" ]; then (echo "Please export LAMBDA_FUNCTION_NAME" && exit 1); fi
@SoarLin
SoarLin / firebase-messaging-sw.js
Created June 2, 2018 04:28
Firebase Messaging Service Worker JS
// [START initialize_firebase_in_sw]
// Import and configure the Firebase SDK
// These scripts are made available when the app is served or deployed on Firebase Hosting
// If you do not serve/host your project using Firebase Hosting see https://firebase.google.com/docs/web/setup
importScripts('https://www.gstatic.com/firebasejs/5.0.0/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/5.0.0/firebase-messaging.js');
firebase.initializeApp({
messagingSenderId: '<YOUR_SENDER_ID>'
});
const messaging = firebase.messaging();
<template>
<div>
...
<button @click="registeFCM">Register</button>
...
</div>
</template>
<script>
import 'firebase/messaging'
@SoarLin
SoarLin / vue_firebase_main.js
Created June 2, 2018 04:24
Vue Project use firebase cloud messaging
const FCMconfig = {
apiKey: 'YOUR_API_KEY',
authDomain: 'YOUR_DOMAIN',
databaseURL: 'https://<YOUR_PROJECT_ID>.firebaseio.com',
projectId: 'YOUR_PROJECT_ID',
storageBucket: '<YOUR_PROJECT_ID>.appspot.com',
messagingSenderId: 'YOUR_SENDER_ID'
}
firebase.initializeApp(FCMconfig)
@SoarLin
SoarLin / build_utils.js
Created June 2, 2018 04:20
Vue use global SASS resource
exports.cssLoaders = function (options) {
options = options || {}
const cssLoader = {...}
const postcssLoader = {...}
function generateLoaders (loader, loaderOptions) {...}
// =========
// SASS 配置
// =========
function resolveResouce(name) {
import { shallow, createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
import VueI18n from 'vue-i18n'
import i18n from '@/i18n'
import router from '@/router'
// Component
import Login from '@/pages/Login'