Skip to content

Instantly share code, notes, and snippets.

View malte-wessel's full-sized avatar

Malte Wessel malte-wessel

View GitHub Profile
@malte-wessel
malte-wessel / browserify-replace-underscore-with-lodash-globally.md
Last active December 29, 2016 17:22
Replace underscore with lodash globally

If you are using backbone (and backbone.marionette) in a browserify managed project, you will likely run into issues with underscore (at least if you manage your dependencies with npm). Each package, that has underscore as a dependency, will require its own version of underscore (making your bundle file contain multiple versions of underscore). Back in the days, you could shim backbone and underscore like:

browserify({
	shim: {
		'underscore': {
			path: './node_modules/underscore/underscore.js',
			exports: '_'
 },
@malte-wessel
malte-wessel / index.js
Last active August 29, 2015 14:07
requirebin sketch
var h = require('virtual-dom/h');
var diff = require('virtual-dom/diff');
var patch = require('virtual-dom/patch');
var createElement = require('virtual-dom/create-element');
var Backbone = require('backbone');
var $ = require('jquery');
Backbone.$ = $;
var BaseView = Backbone.View.extend({
@malte-wessel
malte-wessel / index.js
Last active August 29, 2015 14:07
requirebin sketch
var Backbone = require('backbone');
var $ = require('jquery');
Backbone.$ = $;
var view = new Backbone.View();
var model = new Backbone.Model();
view.listenToOnce(model, 'foo', function(){ console.log('foo!'); });
model.trigger('foo');
@malte-wessel
malte-wessel / gist:872dc16c1ffb367af49c
Last active August 29, 2015 14:15
saveAll, merge extension for Bookshelf
var _ = require('lodash'),
Promise = require('bluebird');
// No, this is not nice, but there's no other way to get the helpers
var Helpers = require('node_modules/bookshelf/lib/helpers');
var database = require('app/core/database');
var Collection = database.Collection.extend({
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _raf2 = require('raf');
@malte-wessel
malte-wessel / Box.js
Last active October 5, 2016 18:07
Melody with React/Inferno: Refs
import { createComponent } from 'melody-component';
import template from './template.twig';
export default createComponent({
componentDidMount() {
this.refs.button.addEventListener('click', this.handleClick);
},
componentWillUnmount() {
this.refs.button.removeEventListener('click', this.handleClick);
}
@malte-wessel
malte-wessel / melody-component.js
Last active October 6, 2016 16:58
Melody with React/Inferno: createComponent
import { createClass } from 'react';
const receiveProps = props => ({
type: 'RECEIVE_PROPS',
payload: props
}};
export default function createComponent(template, reducer) {
const { template, componentWillReceiveProps, ...rest } = definition;
if (!template) throw new Error('Please provide a template.');
@malte-wessel
malte-wessel / index.js
Created October 6, 2016 18:20
requirebin sketch
var React = require('react');
var ReactDOMServer = require('react-dom/server');
function App() {
return React.createElement("div", null,
"Hallo ",
name,
", Wie gehts?"
);
}
@malte-wessel
malte-wessel / Box.js
Last active October 8, 2016 15:47
Melody templates
import { createComponent } from 'melody-component';
import template from './Box.twig';
export default createComponent(template);
@malte-wessel
malte-wessel / hos.js
Created February 5, 2017 12:59
Higher order sagas
function doWhile(test) {
return function*(task, ...args) {
let result;
do {
result = yield call(task, ...args);
} while(yield test(result))
};
}
function retryable(maxRetries = 0) {